USACO 2.1.5 Hamming Code
2014-07-18 12:51
288 查看
水题。DFS暴搜即可。
注意题目要求输出十个数换行。
/*
ID:szwjcch971
LANG:C++
TASK:hamming
*/
#include "stdio.h"
#include "string.h"
int pw2m1[9]={0,1,3,7,15,31,63,127,255};
int N,B,D,top=1;
int stack[70];
FILE *fin=fopen("hamming.in","r");
FILE *fout=fopen("hamming.out","w");
int judge(int a,int b,int d){
int i,temp;
temp=a^b;
i=0;
while(temp){
i+=temp&1;
temp=temp>>1;
}
if(i>=d)return 1;else return 0;
}
int DFS(int layer,int num){
int i,flag,j,k=0;
if(layer==N){
return 1;
}
if(num>pw2m1[B]){
return 0;
}
for(i=num+1;i<=pw2m1[B];i++){
flag=1;
for(j=1;j<=top;j++){
if(!judge(i,stack[j],D)){
flag=0;
break;
}
}
if(flag){
top++;
stack[top]=i;
k=DFS(layer+1,i);
if(k)break;
}
}
return k;
}
int main(){
memset(is_visited,0,sizeof(is_visited));
memset(q,0,sizeof(q));
int i,j,k;
fscanf(fin,"%d%d%d",&N,&B,&D);
for(i=0;i<=pw2m1[B]-N+2;i++){
top=1;
stack[top]=i;
k=DFS(1,i);
if(k){
break;
}
}
for(i=1;i<=top;i++){
fprintf(fout,"%d",stack[i]);
if((i%10==0)||(i==top))fprintf(fout,"\n");
else fprintf(fout," ");
}
return 0;
}
相关文章推荐
- usaco 2.1.5 Hamming Codes
- usaco 2.1.5 hamming
- USACO 2.1.5 Hamming Codes
- USACO2.1.5 Hamming Codes (hamming)
- USACO 2.1.5 Hamming Codes
- USACO 2.1.5 Healthy Holsteins
- Hamming Codes_usaco2.1.5_codevs1454
- 【USACO 2.1.5】海明码
- usaco2.1.5
- USACO2.1.5 Hamming Codes (hamming)
- [USACO 2.1.5] Hamming Codes
- usaco 2.1.5 hamming
- usaco2.1.5(hamming)
- USACO2.1.5--Hamming Codes
- USACO 2.1.5 Hamming Codes
- USACO:2.1.5 Hamming Codes 汉明码
- 【USACO2.1.5】海明码
- Cocos2d-x 2.1.5 简单动画
- USACO - 2.2 Preface Numbering(打表枚举)
- 洛谷 1215 [USACO1.4]母亲的牛奶 Mother's Milk