题目链接:点击打开链接
代码:
#include <stdio.h>
#define NMAX 40000
int g[NMAX][2]={{-1}};
int path[NMAX]={0};
int pathsize=0;
int n=0;
void DFS(int u)
{
int v,i;
for(i=0;i<2;i++)
{
v=g[u][i];
if(v>-1)
{
g[u][i]=-1;
DFS(v);
}
}
path[++pathsize]=u;
}
int main()
{
int N;
scanf("%d",&N);
if (N==1)
{
printf("01\n");
return 0;
}
n = 1<<(N-1);
int i,j;
for(i=0;i<n;i++)
{
j=(i<<1)&(n-1);
g[i][0]=j;
g[i][1]=j+1;
}
DFS(0);
while(--pathsize)
{
printf("%d",path[pathsize]&1);
}
printf("\n");
return 0;
}
看起来完全和欧拉回路没有什么关系,但是是用了欧拉回路的思想,这个题目提前告诉你肯定存在欧拉回路,所以你直接找这条路就好了,另外感觉这道题像是一个模式题,还是自己的二进制学的不好啊,也算学习一下二进制了,,,,,,