比赛 20140713下午练习 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 752199526 运行时间 0.003 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-07-13 16:29:24
显示代码纯文本
#include<iostream>
#include<fstream>
#include<cstdio>
#include<iomanip>
#include<cmath>
using namespace std;
ifstream fin("hamming.in");
ofstream fout("hamming.out");
long long N,B,D;
unsigned ans[100]={0};
//bool OK=false;
void work(unsigned i,unsigned j)
{
	if(i!=N)
	{
		bool mark=true;
		for(int x=0;x<i;x++)
		{
			int temp=0;
			unsigned z=(ans[x]^j);
			while(z>0)
			{
				int k=(z&1);
				if(k==1)temp++;
				z>>=1;
			}
			if(temp<D){mark=false;break;}
		}
		if(mark){ans[i]=j;work(i+1,j+1);}
		else work(i,j+1);
	}
	else
	{
		for(int i=0;i<N;i++)
		{
			fout<<ans[i]<<" ";
			if((i+1)%10==0)fout<<endl;
		}
	}
}
int main()
{
	//Init
	fin>>N>>B>>D;
	ans[0]=0;
	work(1,1);
	return 0;
}
/*if(ans==N)fout<<y<<endl;
else fout<<y<<" ";
ans++;
if(ans%10==0)fout<<endl;
work(y,y+1);*/