当前位置:网站首页>*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
边栏推荐
猜你喜欢
随机推荐
idea安装
使用 compose 的 Canvas 自定义绘制实现 LCD 显示数字效果
使用Connection对象连接管理事务
pyautogui的简单操作(1)
去IOE-EBS何去何从
富媒体在客服IM消息通信中的秒发实践
C语言,if循环 for 循环 while循环 switch循环 do...while()循环
Jetpack Compose - Image using Coli load network Image (including GIF, SVG)
VNet
Row of openharmony container components
C语言 一维数组和二维数组的定义及使用
目标检测类间不平衡问题
开源一夏│别逗,作为程序员你竟还没参与过开源项目?
回归测试如何确定测试范围
探索快八年,谁挡住了小红书的电商梦?
C语言 求一个整数存储在内存中的二进制中1的个数(多种方法详解)
*5-1 CCF 2015-03-1 图像旋转
vivo手机上的系统级消息推送平台的架构设计实践
面试官:请说说什么是BFC?大白话讲清楚
Where to go to IOE-EBS









