zoukankan      html  css  js  c++  java
  • 1721. Gray code[Special judge]

    1721. Gray code[Special judge]
     
     
    Total: 2124 Accepted: 638 Rating:
    2.7/5.0(12 votes)
     
     
         
         
     
    Time Limit: 1sec    Memory Limit:32MB
    Description
    Gray code is an interesting code sequence and has many applications in computer science. No matter you have known it before or not, here are some introductions about its features:
    (1)Gray code has 2 n unique elements;
    (2)Each element contains n digits of 0 or 1;
    (3)Each pair of adjacent elements has exactly one different digit.
    For example, when n=2, one of the gray code sequences is: 00,01,11,10.
    Now, the task is quite simple, given a positive integer n, generate the corresponding Gray code sequence.
    Input
    Input may contain multiple test cases. Each test case consists of one positive integer n(n<=16), Input is terminated by a case with n=0, which should not be processed.
    Output
    For each test case, output the corresponding Gray code sequence, one element per line. There may be multiple answers, any of them will be accepted. Please output a blank line after each test case.
    Sample Input
    Copy sample input to clipboard
    1
    2
    0
    
    Sample Output
    0
    1
    
    00
    01
    11
    10
    
    // Problem#: 1721
    // Submission#: 2001703
    // The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
    // URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
    // All Copyright reserved by Informatic Lab of Sun Yat-sen University
    #include<iostream>
    #include<cmath>
    #include<stdio.h>
    #include<string>
    
    
    using namespace std;
    
    
    void change(char *p,int n){
        p[n-1]+=1;
        int i=0;
        while(p[n-1-i]>='2'){
            p[n-1-i]-=2;
            p[n-2-i]+=1;
            i++;
        }
    
    
    }
    void haha(char *p,char *q,int n){
        int i;
        q[0]=p[0];
        for(i=1;i<n;i++){
            q[i]=(p[i-1]-'0')^(p[i]-'0')+'0';
        }
    }
    int main(){
        int n;
        while(cin>>n&&n!=0){
            char *p=new char[n+1];
             char *q=new char[n+1];
            int i;
            p[n]='\0';
            q[n]='\0';
            for(i=0;i<n;i++){
                p[i]='0';
                q[i]='0';
            }
            for(i=0;i<pow(2,n);i++){
                int x;
                printf("%s\n",q);
                change(p,n);
                haha(p,q,n);
                
            }
            printf("\n");
        }
        return 0;
    }             
    用printf输出,而且必须转化成     题目要求的字符串,而不是简单的加一。               
    
  • 相关阅读:
    【python3的进阶之路一】正则表达式
    基础编程练习50道
    【python3的学习之路十四】IO编程
    【python3的学习之路十三】错误和调试
    【python3的学习之路十二】面向对象高级编程
    【python3的学习之路十一】面向对象编程
    jQuery之防止冒泡事件,冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。
    手机移动端WEB资源整合
    js 验证表单 js提交验证类
    js单条新闻向上滚动
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2990628.html
Copyright © 2011-2022 走看看