您的位置:首页 > 其它

Hamming Codes chapter 2.1

2013-08-25 13:47 218 查看
感觉USCAO的题目真是有点难懂,题目比较简单,直接从最小开始枚举就过了

/*

ID: hubiao cave

PROG: hamming

LANG: C++

*/

#include<iostream>

#include<fstream>

#include<string>
#include<cmath>

using namespace std;

int N,B,D;

int ary[66];
int count1=0;

bool canfit(int);
int main()

{

ifstream fin("hamming.in");

ofstream fout("hamming.out");

fin>>N>>B>>D;
ary[1]=0;
count1++;
for(int i=1;i<=pow(2,B)-1&&count1<N;i++)
{
if(canfit(i))
ary[++count1]=i;
}

int i=1;
while(i<N)
{
if(i%10!=0)
{
fout<<ary[i]<<" ";
}
else
{
fout<<ary[i]<<endl;
}
i++;
}
if((i+1)%10==0)
fout<<ary[i]<<endl;
else
{
fout<<ary[i]<<endl;
}

return 0;

}

bool canfit(int n)
{
for(int i=1;i<=count1;i++)
{
if(n==ary[i])
return false;
int x=n^ary[i];
int cou=0;
int m=0;
while(cou<D&&m<B)
{
if(x>>m&1)
cou++;
m++;
}
if(cou<D)
return false;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: