比赛 20140713下午练习 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 Satoshi 运行时间 0.006 s
代码语言 C++ 内存使用 0.28 MiB
提交时间 2014-07-13 16:42:04
显示代码纯文本
#include <fstream>
using namespace std;
ifstream in("hamming.in");
ofstream out("hamming.out");
int n,b,d;
int mark(int i,int j)
{
	int o[10]={0},p[10]={0},h,k,sum=0,w,pu,q;
	q=i;
    h=1;
	while(i!=0)
	{
		o[h]=i%2;
		i=i/2;
		h++;
	}
	w=1;
	while(j!=0)
	{
		p[w]=j%2;
		j=j/2;
		w++;
	}
	for(k=1;k<=h;k++)if(o[k]!=p[k])sum++;
	
	if(sum>=d)return 1;
	else return 0;
}
int main()
{
    int s,k,k1,i,j,a[101]={0},m; bool tuo=true,tuo2=true;
	s=1;
	k1=1;
	k=0;
	in>>n>>b>>d;
	for(i=1;i<=b;i++)
	{
		k+=k1;
		k1*=2;
	}
	a[1]=0;
	out<<a[1]<<' ';
	while(s<n)
	{
		for(i=a[s]+1;i<=k;i++)
		{
			tuo=true;
			for(j=1;j<=s;j++)
			{
				if(mark(i,a[j])==0)
				{
					tuo=false;
					break;
			    }
		    }
			if(tuo)
			{
				s++;
				a[s]=i;
				if(s==n)break;
			}
	    }
	}
	for(i=2;i<=n;i++)out<<a[i]<<' ';
	out<<endl;
	in.close();
	out.close();
	return 0;
}