欧拉回路(其实我感觉和欧拉回路没有啥关系,二进制的学习)

来源:互联网 发布:部队网络安全教育体会 编辑:程序博客网 时间:2024/05/03 13:46

题目链接:点击打开链接

代码:

#include <stdio.h>#define NMAX 40000int 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;}
看起来完全和欧拉回路没有什么关系,但是是用了欧拉回路的思想,这个题目提前告诉你肯定存在欧拉回路,所以你直接找这条路就好了,另外感觉这道题像是一个模式题,还是自己的二进制学的不好啊,也算学习一下二进制了,,,,,,

0 0
原创粉丝点击