比赛 |
二进制状态表示之搜索中的应用 |
评测结果 |
AAAAAAAAAA |
题目名称 |
海明码 |
最终得分 |
100 |
用户昵称 |
┭┮﹏┭┮ |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2023-07-25 16:23:50 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,b,d;
int s[110] = {0,0},t = 0;
bool fu(int x){
for(int i = 1;i <= t;i++){
int y = s[i] ^ x,ss = 0;
while(y){
ss++;
y -= (y & (-y));
}
if(ss < d)return 0;
}
return 1;
}
void hai(int x,int y){
if(x > n || y >= (1LL << b)){
for(int i = 1;i <= t;i++){
printf("%d ",s[i]);
if(i % 10 == 0)printf("\n");
}
return;
}
if(fu(y)){
t++;s[t] = y;
hai(x+1,y+1);
}
else hai(x,y+1);
}
int main(){
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
scanf("%d%d%d",&n,&b,&d);
hai(1,0);
return 0;
}