比赛 20140713下午练习 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 努力吧 运行时间 0.005 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-07-13 16:16:54
显示代码纯文本
#include<fstream>
#include<cmath>
using namespace std;
ifstream fi("hamming.in");
ofstream fo("hamming.out");
int n,b,d,x=-1;
bool q=0;
unsigned a=0;
int s=1;
int f[70];
int hamming(unsigned i,unsigned j);
void pr(int i);
int main()
{
	fi>>n>>b>>d;
	hamming(1,0);
	return 0;
}

int hamming(unsigned i,unsigned j)
{
	if(s<=n&&j<=pow(2.0,double(b))-1)
	{
		bool r=1;
	    for(int k=1;k<i;k++)
		{
			int l=0;
			unsigned p=f[k]^j;
		    unsigned pl=p;
			while(pl!=0)
			{
				if((pl&1)==1)
				    l++;
			    pl=pl>>1;
			}
			if(l<d)
			{
				r=0;
				break;
			}
		}
		if(r==1||j==0)
		{
			f[i]=j;
			a=j;
			s++;
			hamming(i+1,j+1);
		}
		else
		{
			hamming(i,j+1);
		}
	}
	else
		pr(i-1);
	return 0;
}
void pr(int i)
{
	x=i;
	for(int j=1;j<=i;j++)
		if(j!=i)
			if(j%10==0)
				fo<<f[j]<<endl;
			else
				fo<<f[j]<<" ";
		else
			fo<<f[j]<<endl;
}