当前位置: 首页 >> 程序设计 >> 数据结构和算法 >> 格雷码算法C源码
 

格雷码算法C源码

作者:      来源:zz     发表时间:2006-12-20     浏览次数:      字号:    

格雷码是一个长度为2^n的序列,序列中无相同元素,且每个元素都是长度为n的二进制位串,相邻元素恰好只有1位不同。例如长度为2^3的格雷码为(000,001,011,010,110,111,101,100)。设计分治算法对任意的n值构造相应的格雷码。#include "stdio.h"
void putsgray(int a[],int m)
{
  int i;
  for(i=m;i>0;i--)  printf("%d",a[i]);
  printf("\n");
}
void gray(int n,int a[],int m)
{
  if(n==1)
  {
    a[n]=1-a[n];
    putsgray(a,m);
  }
  else
  {
    gray(n-1,a,m);
    a[n]=1-a[n];
    putsgray(a,m);
    gray(n-1,a,m);
  }
}
main()
{
  int a[5]={0};
  putsgray(a,4);
  gray(4,a,4);
} 

编辑 webmaster

 
 
 
评论更多>>
 
#include <iostream> using std::cout; using std::cin; using std::endl; void gray(int n,int a[],int m) { if(n == 0) { for(int i = m; i > 0; i --) cout<<a[i]; cout<<endl; } else { gray(n - 1, a, m); a[n] = 1 - a[n]; gray(n - 1, a, m); } } int main() { int a[5] = { 0 }; gray(3, a, 3); return 0; }
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •