题目链接:点击打开链接
代码:
#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;
}看起来完全和欧拉回路没有什么关系,但是是用了欧拉回路的思想,这个题目提前告诉你肯定存在欧拉回路,所以你直接找这条路就好了,另外感觉这道题像是一个模式题,还是自己的二进制学的不好啊,也算学习一下二进制了,,,,,,
本文介绍了一个利用欧拉回路思想解决特定问题的算法实现。通过深度优先搜索(DFS)找到完整的路径,并使用二进制技巧进行优化。文章包含完整的C语言代码示例,适合对欧拉回路及二进制操作感兴趣的读者。
760

被折叠的 条评论
为什么被折叠?



