比赛 |
20140713下午练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
海明码 |
最终得分 |
100 |
用户昵称 |
752199526 |
运行时间 |
0.003 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2014-07-13 16:29:24 |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<cstdio>
#include<iomanip>
#include<cmath>
using namespace std;
ifstream fin("hamming.in");
ofstream fout("hamming.out");
long long N,B,D;
unsigned ans[100]={0};
//bool OK=false;
void work(unsigned i,unsigned j)
{
if(i!=N)
{
bool mark=true;
for(int x=0;x<i;x++)
{
int temp=0;
unsigned z=(ans[x]^j);
while(z>0)
{
int k=(z&1);
if(k==1)temp++;
z>>=1;
}
if(temp<D){mark=false;break;}
}
if(mark){ans[i]=j;work(i+1,j+1);}
else work(i,j+1);
}
else
{
for(int i=0;i<N;i++)
{
fout<<ans[i]<<" ";
if((i+1)%10==0)fout<<endl;
}
}
}
int main()
{
//Init
fin>>N>>B>>D;
ans[0]=0;
work(1,1);
return 0;
}
/*if(ans==N)fout<<y<<endl;
else fout<<y<<" ";
ans++;
if(ans%10==0)fout<<endl;
work(y,y+1);*/