当前位置:网站首页>*1-4 OJ 605 格雷码
*1-4 OJ 605 格雷码
2022-08-09 13:31:00 【叶萧白】
题目描述



输入

输出

样例输入

样例输出

源代码
方法1
#include<iostream>
#include <bitset>
using namespace std;
int D2G(int x)
{
return x ^ (x >> 1);
}
int main()
{
int x;
cin >> x;
int y=D2G(x);
int i, j = 0;
int a[1000];
i = y;
while (i)
{
a[j] = i % 2;
i /= 2;
j++;
}
for (i = j - 1; i >= 0; i--)
cout << a[i];
cout << endl;
}
方法2
#include <stdio.h>
#include <string.h>
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int n;
stack<int>q;
while (cin >> n)
{
int a[10000];
int k = 0;
int t = n;
while (t > 0)
{
q.push(t % 2);
t /= 2;
}
while (!q.empty())
{
a[k++] = q.top();
q.pop();
}
cout << a[0];
for (int i = 1; i < k; i++)
{
if (a[i - 1] == a[i])
{
cout << '0';
}
else
{
cout << '1';
}
}
cout << endl;
}
return 0;
}
关于这题
第一种解题方法 较为简单 这里解释一下第一种方法
格雷码的实现 有很多办法 但其实只要两个操作,就能产生:一个是右移 一个是异或 这里都用D2G 函数来实现了
这个时候我们得到的y 已经是 格雷码的十进制数字 我们只需要将其转换成二进制即可
异或 ^
其实可以看作不进位的2进制加法 (或者总结为相同为0 不同为1)
1^0 1
0^1 1
0^0 0
1^1 0
边栏推荐
猜你喜欢

笔试题记录~~

openharmony容器组件之Row

openharmony容器组件之Flex

openharmony容器组件之Column

预约直播 I 阿里云EMR StarRocks 产品发布会

tkiner组件之滚动文本框(scrolledtext )相关操作

手机厂商失守元宇宙

Three kinds of ThreadLocal, play with thread variable storage and transmission

Jetpack Compose - Image using Coli load network Image (including GIF, SVG)

iptables防火墙
随机推荐
Analysis of SEATA Distributed Transaction Framework
iptables之SNAT与DNAT
【LeetCode】1413. 逐步求和得到正数的最小值
11.cuBLAS开发指南中文版--cuBLAS中的Level-1函数amax()和amin()
CTF题解五 Web PHP大法(实验吧)
SEATA分布式事务框架解析
机器学习web服务化实战:一次吐血的服务化之路 (转载非原创)
C语言 函数问题
tianchi过往方法
Mysql seven connection query methods
图解LeetCode——1413. 逐步求和得到正数的最小值(难度:简单)
iptables防火墙
vs怎么用一个Button链接到另一个页面
汇编语言学习(五)
Jetpack Compose——Button(按钮)的使用
什么是布隆过滤器?如何使用?
测试研发的人数科学比例
Jetpack Compose——TextField及OutlinedTextField(文本框)的使用
数据增广
哈希表卡片