C++入门程序作业3
/*
输出n位数据的格雷码
The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of
gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:
00 - 0
01 - 1
11 - 3
10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
要求用向量做这道题,不能用公式
*/
#include<math.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int>num0;//if n is determined, the number need to be transformed
vector<int>num1;//from nomal number to 2 bit vector
vector<int>num2;//to grey
vector<int>num3;//to normal-binary
vector<int>num4;//to align the grey
int j=0;
//according to n generate part of number;
int n=4;
for (int i=0;i<pow(2,n);i++)
num0.push_back(i);
cout<<"Given n = "<<n<<" , return [ ";
for (int i=0;i<num0.size()-1;i++)
cout << num0[i] << ", ";
cout << num0[num0.size()-1];
cout<<" ].";
cout << endl;
for(j=0;j< pow(2,n);j++) {
vector<int>vnum;
int fnum=0;
fnum=num0[j];
int num=fnum;
int i=0;
for(i=0;num>2;i++)//frist push LSB
{
vnum.push_back(num%2);
num=num/2;
}
vnum.push_back(num%2);
int a=1;
num1.push_back(0);//add 0 in the MSB
for (i=1;i<=vnum.size();i++)
num1.push_back(vnum[vnum.size()-i]);
//generate gray code in binary
for (int i=0;i<num1.size()-1;i++)
num2.push_back(num1[i]^num1[i+1] );
//generate gray code in align
num4=num2;
int s=0;
int k=0;
s=n-num1.size();
for(k=0;k<=s;k++){
num4.push_back(0);
}
//grey to normal-binary
int c=0^num2[0];
num3.push_back(c);
for (int i=1;i<num2.size();i++)
{
c=c^num2[i];
num3.push_back(c);
}
//display
for (int i=0;i<num4.size();i++)
cout << num4[i] << " ";
cout <<" - "<<fnum<< endl;
num1.clear( );
num2.clear( );
num3.clear( );
num4.clear( );
}
return 0;
}
C++入门程序作业3的更多相关文章
- C++入门程序作业2
程序在Dev-C++5.5.3版本运行 结构体的使用 给结构体赋值,打印出结构体中学生姓名,分数,平均分 #include <iostream>#include <cassert&g ...
- C++入门程序作业1
将一个int A[]={ , , ,}定义的可能重复的数字去掉重复的元素. 了解向量,容器如何使用,size,地址的关系,理解unique erase函数的返回值是什么参数 结果:将1,1,1,2 ...
- mybatis入门_mybatis基本原理以及入门程序
一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...
- 1.struts2原理和入门程序
Struts2是一个MVC的Web应用框架,是在Struts1和WebWork发展起来的,以WebWork为核心,采取拦截器机制来处理用户请求. 原理图: 分析步骤: 1.用户发送一个请求 2.请求的 ...
- springMVC2 1入门程序
1入门程序 .1需求 实现商品列表查询 .2需要的jar包 使用spring3.2.0(带springwebmvc模块) .1前端控制器 在web.xml中配置: <?xml version=& ...
- struts2入门程序
struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
- springmvc(一) springmvc框架原理分析和简单入门程序
springmvc这个框架真的非常简单,感觉比struts2还更简单,好好沉淀下来学习~ --WH 一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解 ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
随机推荐
- windows编程命名规则
转自:http://blog.sina.com.cn/s/blog_52cbfc3f0100fdy6.html 匈牙利命名法是一种编程时的命名规范.基本原则是:变量名=属性+类型+对象描述.其中每一对 ...
- caffe win添加新层
1.编写.h和.cpp .cu文件 将.hpp文件放到路径caffe-windows\caffe-master\include\caffe\layers下 将.cpp文件和.cu放到路径caffe-w ...
- Eggjs 设置跨域请求
1. 安装egg-cors npm install egg-cors --save 2.打开config/plugin.js exports.cors: { enable: true, package ...
- ckeditor5字体颜色,字体背景颜色设置显示
在config.js中添加相关代码: config.allowedContent=true;//关闭标签过滤, config.colorButton_enableAutomatic = true; c ...
- (05) SpringBoot开发RESTFull?
1. 什么是RESTFull? RESTFull 一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层 ...
- 让input不可编辑
有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...
- 接口压力测试--Jmeter
1.Jmeter简介 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2 ...
- GDAL——命令使用专题——gdalinfo命令
GDAL——命令使用专题——gdalinfo命令 前言 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用 ...
- unity中多个门的开关动画保持独立性
List<Animation> storeAnimation; public void Awake() { storeAnimation = new List<Animation&g ...
- UML之顺序图
一 定义 顺序图是将交互关系表示为一个二维图.纵向是时间轴(生命线),时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程 ...