博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HNUSTOJ-1009 格雷码
阅读量:7040 次
发布时间:2019-06-28

本文共 1247 字,大约阅读时间需要 4 分钟。

1009: 格雷码

时间限制: 1 Sec  内存限制: 128 MB
提交: 90  解决: 78
[][][]

题目描述

对于给定的正整数n,格雷码为满足如下条件的一个编码序列:

(1) 序列由2^n个编码组成,每个编码都是长度为n的二进制位串。
(2) 序列中无相同的编码。
(3) 序列中位置相邻的两个编码恰有一位不同。
例如:n=2时的格雷码为:{00, 01, 11, 10}。

输入

m个测试例的数据,每个测试例的数据由一个正整数n(20>n>0)组成,以0结束。

输出

对于每个测试例n,输出2^n个长度为n的格雷码。(在每个格雷码内,两个位之间没有空格如,00输出为:00)。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后两个空行。

样例输入

450

样例输出

00000001001100100110011101010100110011011111111010101011100110000000000001000110001000110001110010100100011000110101111011100101001011010010100011000110011101111010111101111111101111001010010101101111011010010100111000110000

 

#include
#include
#include
using namespace std; char *toString(int x){ static char buff[20]; sprintf(buff, "%d", x); return buff;}string num2Binary(int num, int bitNum){ string ret=""; for(int i = bitNum - 1; i >= 0; i--){ ret += toString((num >> i) & 1); } return ret;}void getGrayCode(int bitNum){ for(int i = 0; i < (1 << bitNum); i++){ int grayCode = (i >> 1) ^ i; cout << num2Binary(grayCode, bitNum) <<"\n"; } cout << '\n';}int main(){ int n; while(scanf("%d", &n) == 1 && n){ getGrayCode( n ); }}

 

转载于:https://www.cnblogs.com/Pretty9/p/7406800.html

你可能感兴趣的文章
第二十四条:消除非受检警告
查看>>
给阅读的网页作标记
查看>>
vue条件渲染
查看>>
转 MySQL数据库基础
查看>>
Oracle dblink创建
查看>>
python04 while循环
查看>>
web 开发之酷炫--- 酷炫展示
查看>>
ubuntu 解压命令全部
查看>>
Chrome教程(一)NetWork面板分析网络请求
查看>>
第十八回  基础才是重中之重~开发人员应学会用throw
查看>>
Rosenblatt's perceptron
查看>>
1570:基础练习 分解质因数
查看>>
判断ie浏览器7、8、9三个版本
查看>>
GDUFE ACM-1124
查看>>
Schwarz积分公式
查看>>
工作中常用的 Linux 命令
查看>>
English Corner
查看>>
(最短路 SPFA)Invitation Cards -- poj -- 1511
查看>>
两数相加LeetCode
查看>>
列表生成 加1四种方法
查看>>