记录编号 |
111594 |
评测结果 |
AAAAAAAAAA |
题目名称 |
海明码 |
最终得分 |
100 |
用户昵称 |
slyrabbit |
是否通过 |
通过 |
代码语言 |
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;
}