比赛 20140713下午练习 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 KZNS 运行时间 0.002 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-07-13 15:49:10
显示代码纯文本
#include<fstream>
using namespace std;
ofstream fo("hamming.out");
ifstream fi("hamming.in");
unsigned int n,b,d,end[70]={0},bb=1;
bool f=1;
void find(unsigned int i,unsigned int j);
void pt();
int main()
{
	fi>>n>>b>>d;
	bb<<=b;
	bb--;
	for(unsigned int i=0;i<=bb&&f;i++)
		find(1,i);
	return 0;
}
void find(unsigned int i,unsigned int j)
{
	if(i>n)
		pt();
	else
		if(j<=bb)
		{
			bool ff=1;
			for(int k=1;(k<=i-1)&&ff;k++)
			{
				unsigned int ss=0,kk=j;
				kk^=end[k];
				for(;kk>0;)
				{
					if(kk&1)
						ss++;
					kk>>=1;
				}
				if(ss<d)
					ff=0;
			}
			if(ff)
			{
				end[i]=j;
				find(i+1,j+1);
			}
			else
				find(i,j+1);
		}
}
void pt()
{
	f=0;
	for(int i=1;i<n;i++)
		if(!(i%10))
			fo<<end[i]<<endl;
		else
			fo<<end[i]<<' ';
	fo<<end[n];
}