#include<iostream>
#include<math.h>
#include<cstdio>
using namespace std;
void gray(int a[16],int n)
{
printf("%d",a[0]);
for( int i=1; i<n ; i++ )
{
if( (a[i]+a[i-1])%2==0 )
{
printf("%c",'0');
}
else
printf("%c",'1');
}
printf("\n");
}
int next(int a[],int n)
{
int tmp=1;
for( int i=n-1; i>=0 ; i-- )
{
int t=a[i];
a[i]=(t+tmp)%2;
tmp=(t+tmp)/2;
}
if( tmp==1 )
{
return 0;
}
return 1;
}
int main()
{
int n;
while((cin>>n)&&n!=0)
{
int arr[16]={0};
while( true )
{
gray(arr,n);
if(!next(arr,n))
break;
}
printf("\n");
}
return 0;
}
//当输出太多的时候,c格式的输出还是能省时间的
1721. Gray code[Special judge]
最新推荐文章于 2013-09-18 16:58:09 发布