1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=(1<<11)+10; vector<int>G[N]; int n,m,b[N];bool v[N],flg; void dfs(int x,int dep) { if(flg) return ; if(dep>n){flg=1;return ;} for(int y:G[x])if(v[y]==0) { b[dep]=y;v[y]=1; dfs(y,dep+1); if(flg==1) return; b[dep]=0;v[y]=0; } } int main() { int k,s;scanf("%d",&k);n=(1<<k);s=n-1; for(int i=0,x;i<=s;i++) { x=(i<<1)&s; if(i!=x)G[i].push_back(x); x=((i<<1)&s)+1; if(i!=x)G[i].push_back(x); } printf("%d ",n); for(int i=1;i<=k;i++)printf("0"); memset(v,0,sizeof(v)); flg=0;dfs(0,1); if(flg){for(int i=1;i<=n-k;i++)printf("%d",b[i]&1);} return 0; }
- 1
信息
- ID
- 4698
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 4
- 上传者