当前位置:网站首页>*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
边栏推荐
猜你喜欢
随机推荐
Jetpack Compose——Modifier的基本属性简单介绍
三种ThreadLocal,玩转线程变量保存与传递
将 .json 格式 转换成 .xml格式
【LeetCode】1413. 逐步求和得到正数的最小值
C语言中的运算符(超全超详细)
Badge of openharmony container components
pyautogui的简单操作(2)-弹窗操作
String为什么是不可变的?
The use of Jetpack Compose - Button (Button)
系统可扩展性思考
C语言中常用的数组排序方法:冒泡排序、选择排序、插入排序、数组的移动(含代码详解)以及相关联系题
spark单机版安装
网安学习-应急响应3
什么是布隆过滤器?如何使用?
初中级常见面试题
汇编语言学习(八)
二叉树的遍历(py)
Spark Sql之union
iptables防火墙
Jetpack Compose——remember、mutableStateOf、rememberSaveable









