比赛 |
20140713下午练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
海明码 |
最终得分 |
100 |
用户昵称 |
wolf |
运行时间 |
0.002 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2014-07-13 15:41:51 |
显示代码纯文本
#include<iostream>
#include<bitset>
#include<cstdio>
#include<vector>
using namespace std;
FILE *in,*out;
int N,B,D;
bool core(bitset<16> aa,bitset<16> bb){
bitset<16> ee;
ee=aa^bb;
if(ee.count()>=D)
return 1;
return 0;
}
int main(){
in=fopen("hamming.in","r");
out=fopen("hamming.out","w");
fscanf(in," %d %d %d",&N,&B,&D);
int u=0;
bitset<16> aa(u);
vector<int> num;
vector<bitset<16> > data;
data.push_back(aa);
num.push_back(0);
int end;
if(B==1){end=2;}
if(B==2){end=4;}
if(B==3){end=8;}
if(B==4){end=16;}
if(B==5){end=32;}
if(B==6){end=64;}
if(B==7){end=128;}
if(B==8){end=256;}
/////////////////////////////
for(int i=1;i!=end;++i){
if(data.size()==N)
break;
bitset<16> aa(i);
//cout<<i<<"-->"<<aa<<endl;;
bool io=1;
for(int k=0;k!=data.size();++k){
if(core(aa,data[k])){
}
else{
io=0;
break;
}
}
if(io){
num.push_back(i);
data.push_back(aa);
}
}
////////////////////////////
for(int i=0;i!=num.size();++i){
if(i%10==0&&i!=0){
fprintf(out,"\n");
}
fprintf(out,"%d ",num[i]);
//cout<<num[i]<<" ";
}
return 0;
}
//designed by wolf