格雷码 hnustoj
来源:互联网 发布:淘宝颜色分类自定义 编辑:程序博客网 时间:2024/06/07 06:38
1004: 格雷码
时间限制: 1 Sec 内存限制: 128 MB提交: 274 解决: 96
[提交][状态][讨论版]
题目描述
对于给定的正整数n,格雷码为满足如下条件的一个编码序列:
(1) 序列由2^n个编码组成,每个编码都是长度为n的二进制位串。
(2) 序列中无相同的编码。
(3) 序列中位置相邻的两个编码恰有一位不同。
例如:n=2时的格雷码为:{00, 01, 11, 10}。
输入
m个测试例的数据,每个测试例的数据由一个正整数n(n <= 20) 组成,以0结束。
输出
对于每个测试例n,输出2^n个长度为n的格雷码。(为方便查看,在每个格雷码内,两个位之间没有空格如,00输出为:00)。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后两个空行。
样例输入
450
样例输出
00000001001100100110011101010100110011011111111010101011100110000000000001000110001000110001110010100100011000110101111011100101001011010010100011000110011101111010111101111111101111001010010101101111011010010100111000110000
提示
#include<vector>#include<iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;int number[30];void change(int n,int len) { int p; int i=0; memset(number,0,sizeof(number)); while(n) { p=n%2; number[i++]=p; n/=2; } for(int i=len-1; i>=0; i--) { printf("%d",number[i]); }}int main() { int n; while(~scanf("%d",&n) && n) { vector<int> v; v.clear(); for(int i=0; i<(1<<n); i++) v.push_back(i^(i>>1)); vector<int> ::iterator it; for(it=v.begin(); it!=v.end(); it++) { change(*it,n); printf("\n"); } printf("\n"); }}
格雷码与二进制的转换具体可以看http://blog.csdn.net/jingfengvae/article/details/51691124
阅读全文
0 0
- 格雷码 hnustoj
- HNUSTOJ 1601:名字缩写
- HNUSTOJ 1604:Operations
- HNUSTOJ 部分源码
- HNUSTOJ 1516:Loky的烦恼
- hnustoj 并查集——宗教信仰
- hnustoj 1030: Count the Number of Cycles
- HNUSTOJ 1444:树的最长路径
- HNUSTOJ-1696 简单验证码识别(模拟)
- HNUSTOJ-1689 送外卖(TSP问题)
- HNUSTOJ 1587: 土豪金的加密与解密
- 格雷码
- 格雷码
- 格雷码
- 格雷码
- 格雷码
- 格雷码
- 格雷码
- 回溯算法--三连游戏(人机对战)
- 基于TCP的Socket文件双向传输(可并发)
- Beginning Spring学习笔记——第2章(三)Spring的Bean管理
- Spring Aop 浅谈
- javascript中获取当前时间戳和具体年月日时分秒
- 格雷码 hnustoj
- AngularJS结合dateTimePicker的使用-指令
- 详述支付网关的设计原则
- openldap用户认证
- 机器学习集训营---第五周总结
- Eclipse SVN 冲突解决的 四种方案
- firebreath与JS交互
- 这可能是史上最全的CSS自适应布局总结
- Android 故障GIF动画制作