#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
char a[20]; //保存每个格雷码串
int n; //每个格雷码串的长度
void dfs(int k)
{
if (k == n)
{
printf("%s\n", a);
return ;
}
dfs(k+1);
a[k] = '0' + '1' - a[k]; //将第k位取反
dfs(k+1);
}
int main()
{
while (cin >> n && n > 0)
{
memset(a, '0', sizeof a);
a[n] = '\0';
dfs(0);
printf("\n");
}
return 0;
}
格雷码(分治)
最新推荐文章于 2022-11-19 23:15:15 发布