1 条题解
-
2
数字从小到大遍历()。
然后用
bool数组来标记是否可以使用。如果当前这个数可以使用,则暴力的把海明距离 的数字全部使用DFS暴力筛掉。然后就没了。
#include<bits/stdc++.h> using namespace std; #define ll long long bool qwq[1025],qwp[15]; void dfs(int now,int b,int d){ if(!d){ qwq[now]=0; return; } for(int i=0;i<b;i++){ if(qwp[i]) continue; now^=(1<<i); qwp[i]=1; dfs(now,b,d-1); qwp[i]=0; now^=(1<<i); } } signed main(){ cin.tie(0); ios::sync_with_stdio(false); int n,b,d; cin>>n>>b>>d; vector<int> v; for(int i=0;i<=((1<<b)-1);i++) qwq[i]=1; for(int i=0;i<=((1<<b)-1); i++){ if(qwq[i]){ v.push_back(i); for(int j=1;j<d; j++) dfs(i,b,j); } if(v.size()==n) break; } for(int i=0;i<v.size();i++){ if(i%10==0&&i!=0) cout<<"\n"; cout<<v[i]<<" "; } return 0; }
信息
- ID
- 30
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 14
- 已通过
- 11
- 上传者