比赛 |
20140713下午练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
海明码 |
最终得分 |
100 |
用户昵称 |
1azyReaper |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2014-07-13 16:48:31 |
显示代码纯文本
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
ifstream fin("hamming.in");
ofstream fout("hamming.out");
int n,b,d;
int maxa;
int ans[101];
int al;
bool flag=false;
bool hamming(int u,int v)
{
int x=0;
int tmp=u^v;
while(tmp>0)
{
x++;
tmp=tmp-(tmp&(-tmp));
}
if(x>=d)
return true;
else
return false;
}
int dfs(int x)
{
if(flag)
return 0;
if(al>=n)
{
int dd=1;
for(int i=0;i<al-1;i++)
{
if(dd%10!=0)
{
fout<<ans[i]<<' ';
}
else
fout<<ans[i]<<endl;
dd++;
}
fout<<ans[al-1]<<endl;
flag=true;
return 0;
}
for(int i=x+1;i<=maxa;i++)
{
bool en=true;
for(int j=0;j<al;j++)
{
if(!hamming(ans[j],i))
en=false;
}
if(en)
{
ans[al++]=i;
dfs(i);
al--;
}
}
return 0;
}
int main()
{
fin>>n>>b>>d;
al=0;
maxa=(1<<b)-1;
for(int i=0;i<=maxa;i++)
{
if(flag)
return 0;
ans[al++]=i;
dfs(i);
al--;
}
fin.close();
fout.close();
return 0;
}