记录编号 111594 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 Gravatarslyrabbit 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2014-07-13 17:28:13 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,b,d,a[65]={0};
void putout()
{
	for(int i=1;i<=n;i++)
	{
		if(i%10==0)
			cout<<endl;
		cout<<a[i-1]<<" ";
	}
}
bool check(unsigned int i,unsigned int x)
{
	for(int j=0;j<=i;j++)
	{
		unsigned int temp1=a[j],temp2=x,stemp=0;
		for(int k=1;k<=b;k++)
		{
			if((temp1&1)!=(temp2&1))
				stemp++;
			temp1>>=1;
			temp2>>=1;
		}
		if(stemp<d)
			return false;
	}
	return true;
}
void work(unsigned int i,unsigned int j)//第i个
{
	if(i==n)
	{
		putout();
		return;
	}
	if(check(i-1,j))
	{
		a[i]=j;
		work(i+1,j+1);
	}
	else
		work(i,j+1);
}
int main()
{
	freopen("hamming.in","r",stdin);
	freopen("hamming.out","w",stdout);
	cin>>n>>b>>d;
	a[0]=0;
	work(1,0);
	return 0;
}