/*

输出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的更多相关文章

  1. C++入门程序作业2

    程序在Dev-C++5.5.3版本运行 结构体的使用 给结构体赋值,打印出结构体中学生姓名,分数,平均分 #include <iostream>#include <cassert&g ...

  2. C++入门程序作业1

    将一个int A[]={ ,  ,  ,}定义的可能重复的数字去掉重复的元素. 了解向量,容器如何使用,size,地址的关系,理解unique erase函数的返回值是什么参数 结果:将1,1,1,2 ...

  3. mybatis入门_mybatis基本原理以及入门程序

    一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...

  4. 1.struts2原理和入门程序

    Struts2是一个MVC的Web应用框架,是在Struts1和WebWork发展起来的,以WebWork为核心,采取拦截器机制来处理用户请求. 原理图: 分析步骤: 1.用户发送一个请求 2.请求的 ...

  5. springMVC2 1入门程序

    1入门程序 .1需求 实现商品列表查询 .2需要的jar包 使用spring3.2.0(带springwebmvc模块) .1前端控制器 在web.xml中配置: <?xml version=& ...

  6. struts2入门程序

    struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  8. springmvc(一) springmvc框架原理分析和简单入门程序

    springmvc这个框架真的非常简单,感觉比struts2还更简单,好好沉淀下来学习~ --WH 一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解 ...

  9. python web入门程序

    python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...

随机推荐

  1. SQL查询【根据生日计算】

    根据生日日期,获取当前年龄.年龄单位. Select Case when DateDiff(Year, BirthDate, GetDate()) > 0 then DateDiff(Year, ...

  2. RESTful Level

    REST(表述性状态转移)是最近几年讨论的最为热烈的话题之一,其起源于Roy.T.Fielding博士的论文<软件架构风格和基于网路的软件架构设计>.Roy博士在他的论文里从架构风格角度阐 ...

  3. docker 部署nginx

    # 下载镜像 docker pull nginx # 挂载  文件 和文件夹必须存在 docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $P ...

  4. excel 批量上传图片

    1.在excel中  输入公式  ="<table><img src=""D:\素材\"&A2&".jpeg&quo ...

  5. 学习python的几种模块

    最近在研究python写的拷屏系统,里面应用到了很多种模块,有文件操作的(shutil,os),多进程控制的(thread,threading),涉及时间的(time,datetime),数据库操作的 ...

  6. js的中文在网页中显示为乱码

    最近的毕业设计写道局部检查用户命是否为空和是否符合规范时 发现页面回显的中文为乱码 then  找到一个和我遇到同样问题的人呐 他说“最近在写一个商城网页的时候遇到了一个问题,那就是javascrip ...

  7. 【IDEA填坑】springboot整合ssm框架

    遇到俩问题:一个是mybatis生疏  在EmpMapper.xml中定义resultMap <resultMap id="EmpWithDept" type="c ...

  8. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  9. iSlide——图标库、图示库的用法

    iSlide中,有一个“图示库”功能,主要功能是同时排列多块文字或多张图片.单击插图库,会弹出一个新的对话框.从中,可以选择权限.分类.数量数据和样式,也可以直接搜索.   下面就举一个例子:我要开一 ...

  10. docker 下安装gitlab

    1.找到docker镜像 docker search gitlab 2.下载gitlab镜像 docker pull  gitlab/gitlab-ce/ 3.通常会将 GitLab 的配置 (etc ...