USACO-Hamming Codes(枚举)
2017-03-04 17:41
375 查看
题目链接:USACO-Hamming Codes
既然要求字典序最小,那么直接枚举就行了。
/*
ID: xdujlx1
PROG: hamming
LANG: C++
*/
#include<bits/stdc++.h>
using namespace std;
int ans[70];
int k;
int n,b,d;
void ioinit()
{
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
}
int dis(int c)
{
int res=0;
while(c)
{
res+=c&1;
c>>=1;
}
return res;
}
bool check(int c)
{
for(int i=0;i<k;i++)
if(dis(c^ans[i])<d) return false;
return true;
}
int main()
{
ioinit();
scanf("%d%d%d",&n,&b,&d);
ans[k++]=0;
for(int i=1;i<(1<<b);i++)
if(check(i)) ans[k++]=i;
for(int i=0;i<n;i+=10)
{
printf("%d",ans[i]);
for(int j=i+1;j<i+10&&j<n;j++)
printf(" %d",ans[j]);
printf("\n");
}
return 0;
}
既然要求字典序最小,那么直接枚举就行了。
/*
ID: xdujlx1
PROG: hamming
LANG: C++
*/
#include<bits/stdc++.h>
using namespace std;
int ans[70];
int k;
int n,b,d;
void ioinit()
{
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
}
int dis(int c)
{
int res=0;
while(c)
{
res+=c&1;
c>>=1;
}
return res;
}
bool check(int c)
{
for(int i=0;i<k;i++)
if(dis(c^ans[i])<d) return false;
return true;
}
int main()
{
ioinit();
scanf("%d%d%d",&n,&b,&d);
ans[k++]=0;
for(int i=1;i<(1<<b);i++)
if(check(i)) ans[k++]=i;
for(int i=0;i<n;i+=10)
{
printf("%d",ans[i]);
for(int j=i+1;j<i+10&&j<n;j++)
printf(" %d",ans[j]);
printf("\n");
}
return 0;
}
相关文章推荐
- USACO-Section2.1 Hamming Codes【暴力枚举】
- USACO 2.1 Hamming Codes(位运算枚举)
- USACO 1.4 The Clocks (暴力枚举)
- Letter Game_usaco4.3_枚举
- USACO-Section 3.1 Contact(枚举)
- [USACO 2.1.5] Hamming Codes
- USACO 玛丽卡(最短路+枚举)
- USACO 2.1 海明码 Hamming Codes
- bzoj 1661: [Usaco2006 Nov]Big Square 巨大正方形(枚举)
- usaco 1.4 枚举&搜索
- 【bzoj 1610: [Usaco2008 Feb]Line连线游戏】 枚举
- USACO sec2.1 Hamming Codes
- USACO section Camelot(枚举+队列优化)
- USACO-Section2.1 Healthy Holsteins [搜索][枚举]
- bzoj 1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪【枚举】
- USACO 1.2 Milking Cows (枚举)
- bzoj 1600: [Usaco2008 Oct]建造栅栏 枚举
- USACO-Section1.6 Superprime Rib (枚举)
- USACO TRAINING 1.4.2 Packing Rectangles(状态压缩+枚举)
- USACO / Name That Number(枚举,哈希)