[2016/7/20][usaco 2.1]Hamming Codes
来源:互联网 发布:打印发票软件 编辑:程序博客网 时间:2024/05/21 07:01
http://train.usaco.org/usacoprob2?a=JavNK9GpMNL&S=hamming
因为输出格式的问题连wa好几下,最讨厌这种不标注输出格式让你自己观察的题了!!
这道题直接暴力过的,因为数据范围比较小。最坏情况是C81一直加到C88,直接暴力搜就好了,方法同上一道饲料题。要求数字最小,所以先排个序,然后遍历,找符合条件的即可。
上一道题看有人用stl 的bitset库,觉得挺好玩,所以这道题也试着用了用。直接把二进制数字转换成整数的函数实在太好用了!还可以直接创建bitset类型的数组,很方便。
bitset库常见用法:
1.bitset<n> b:创建一个n位的,每位都为0的二进制数
1.b.to_ulong():把b转化为整数
代码如下:
/* ID:49743541 LANG:C++ TASK:hamming */ #include <stdio.h>#include <iostream>#include <bitset>#include <algorithm>using namespace std;int N,B,D;bitset<8> b[100000];bitset<8> num;bool mark[100000];int n = 0;bool compare(bitset<8> A,bitset<8> B){if(A.to_ulong()<B.to_ulong())return true;return false;}void dfs(int wei,int amount){//printfif(wei==B) return;if(amount>=D){b[n] = num;n++;}num[wei+1] = 1; dfs(wei+1,amount+1);num[wei+1] = 0; dfs(wei+1,amount);}int main(){freopen("hamming.in","r",stdin); freopen("hamming.out","w",stdout); scanf("%d%d%d",&N,&B,&D);//D是距离,B是位数,N是数量 dfs(-1,0);sort(b,b+n,compare);int begin = 1;int j;cout<<0;for(int i = 0;i<n;i++){if(begin==N) break;for(j = 0;j<n;j++){if(mark[j]&&i!=j){int shuliang = 0;for(int k = 0;k<B;k++){if(b[j][k]!=b[i][k])shuliang++;}if(shuliang<D) break;}}if(j==n) {mark[i] = true;begin++;if(begin!=1&&begin%10==1)cout<<endl<<b[i].to_ulong();elsecout<<" "<<b[i].to_ulong();}}cout<<endl;/*for(int i=0;i<n;i++){cout<<endl;cout<<b[i].to_ulong()<<" "<<b[i]<<endl;}*/return 0;}
0 0
- [2016/7/20][usaco 2.1]Hamming Codes
- USACO 2.1 Hamming Codes (hamming)
- USACO--2.1Hamming Codes
- USACO 2.1 Hamming Codes
- USACO 2.1 Hamming Codes
- USACO Hamming Codes 2.1
- USACO 2.1.5 Hamming Codes
- [USACO 2.1.5] Hamming Codes
- usaco 2.1.5 Hamming Codes
- USACO 2.1.5 Hamming Codes
- USACO Section 2.1 Hamming Codes
- USACO Section 2.1 Hamming Codes
- USACO 2.1 Hamming Codes (递归)
- USACO 2.1.5 Hamming Codes
- USACO:2.1.5 Hamming Codes 汉明码
- USACO-Section 2.1 Hamming Codes (DFS)
- USACO 2.1 Hamming Codes (迭代)
- USACO 2.1 海明码 Hamming Codes
- C# ListView用法详解
- Git-Git基础
- Android基础-- 利用handler发送消息报:"This message is already in use"解决办法
- TG(提高篇)第15讲 实践项目 简单银行系统(函数篇)
- Python 处理config.ini文件
- [2016/7/20][usaco 2.1]Hamming Codes
- Codeforces 698C. Fix a Tree (并查集)
- 图片的高斯模糊
- [树] cf 698B D Fix a Tree
- opencv鼠标响应事件
- 混日子不是你的错,根源在这里
- 五大常用算法之五:分支限界法
- NGINX 结合 lua 动态修改upstream
- 请求框架&移动请求