usaco Hamming Codes
2016-11-07 16:12
246 查看
就是在二进制上的枚举,B位的意思就是十进制不超过1<<B,数字很小枚举即可每枚举一个跟前面的进行比较看符不符合题意,就是进行按位异或然后统计其中1的个数大于等于D就符合题意。
/*
ID:jinbo wu
LANG: C++
TASK: hamming
*/
#include<bits/stdc++.h>
using namespace std;
int a[500];
int n,b,d,maxn;
bool check(int m,int k)
{
int temp=m^k;
int cnt=0;
while(temp)
{
if(temp&1) cnt++;
temp>>=1;
}
if(cnt>=d)
return true;
return false;
}
bool can(int m,int k)
{
for(int i=1;i<k;i++)
{
if(!check(m,a[i]))
return false;
}
return true;
}
void dfs(int cnt,int m)
{
if(cnt==n)
{
a[cnt]=m;
return;
}
a[cnt]=m;
for(int i=m+1;i<=maxn;i++)
{
if(can(i,cnt+1))
{
dfs(cnt+1,i);
break;
}
}
}
int main()
{
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
scanf("%d %d %d",&n,&b,&d);
maxn=1<<b;
dfs(1,0);
int l=1;
int temp=n;
while(temp)
{
for(int i=1;i<min(temp,10);i++)
{
printf("%d ",a[l++]);
}
printf("%d\n",a[l++]);
temp-=min(temp,10);
}
}
/*
ID:jinbo wu
LANG: C++
TASK: hamming
*/
#include<bits/stdc++.h>
using namespace std;
int a[500];
int n,b,d,maxn;
bool check(int m,int k)
{
int temp=m^k;
int cnt=0;
while(temp)
{
if(temp&1) cnt++;
temp>>=1;
}
if(cnt>=d)
return true;
return false;
}
bool can(int m,int k)
{
for(int i=1;i<k;i++)
{
if(!check(m,a[i]))
return false;
}
return true;
}
void dfs(int cnt,int m)
{
if(cnt==n)
{
a[cnt]=m;
return;
}
a[cnt]=m;
for(int i=m+1;i<=maxn;i++)
{
if(can(i,cnt+1))
{
dfs(cnt+1,i);
break;
}
}
}
int main()
{
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
scanf("%d %d %d",&n,&b,&d);
maxn=1<<b;
dfs(1,0);
int l=1;
int temp=n;
while(temp)
{
for(int i=1;i<min(temp,10);i++)
{
printf("%d ",a[l++]);
}
printf("%d\n",a[l++]);
temp-=min(temp,10);
}
}
相关文章推荐
- USACO :Hamming Codes 解题报告
- USACO Hamming Codes
- 从usaco hamming Codes谈FP思想及FP技巧
- USACO Hamming Codes
- USACO Hamming Codes DFS 构造
- USACO Hamming Codes 求汉明距离
- USACO Hamming Codes 2.1
- USACO Section 2.1 Hamming Codes - 题意相当坑爹..很无聊..
- USACO-Section2.1 Hamming Codes [搜索]
- USACO hamming 继续暴搜
- USACO holstein, hamming
- usaco——hamming
- usaco-2.1-hamming-pass
- usaco2.1.5(hamming)
- USACO2.1.5 Hamming Codes (hamming)
- usaco 2.1 hamming...枚举...
- usaco2.14Hamming Codes
- USACO--2.1Hamming Codes
- usaco 2.1 hamming 2008.6.10
- BCH and Hamming Codes