比赛 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