比赛 20140713下午练习 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 chs 运行时间 0.003 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-07-13 15:34:34
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
const int maxn=100;
unsigned int ham[maxn],p=1;
int N,B,D;
int n=1;
bool cmp(unsigned int x,unsigned int y)
{
	int i;
	int c=0;
	for(i=1;i<=B;i++){
		int xt=x%2;x=x/2;
		int yt=y%2;y=y/2;
		if(xt!=yt) c++;
	}
	if(c>=D) return true;
	return false;
}
bool cmp_all(unsigned x)
{
	int i;
	for(i=0;i<p;i++)
		if(!cmp(ham[i],x))
			return false;
	return true;
}
void seek(unsigned int x)
{
	int i;
	for(unsigned y=x+1;;y++){
		if(!cmp_all(y)) continue;
		ham[p++]=y;
		n++;
		if(n==N){
			int j=0;
			for(i=0;i<p;i++){
				j++;
				cout<<ham[i]<<" ";
				if(j==10){
					cout<<endl;
					j=0;}
			}
			return ;
		}
		seek(y);
		if(n==N) return ;
	}
}
int main()
{
	freopen("hamming.in","r",stdin);
	freopen("hamming.out","w",stdout);
	cin>>N>>B>>D;
	seek(0);
	return 0;
}