剑指offer系列源码-打印1到最大的N位数

来源:互联网 发布:ubuntu怎么重装系统 编辑:程序博客网 时间:2024/05/02 04:16
题目1515:打印1到最大的N位数时间限制:1 秒内存限制:128 兆特殊判题:否提交:1863解决:925题目描述:给定一个数字N,打印从1到最大的N位数。输入:每个输入文件仅包含一组测试样例。对于每个测试案例,输入一个数字N(1<=N<=5)。输出:对应每个测试案例,依次打印从1到最大的N位数。样例输入:1样例输出:123456789

#include<iostream>#include<stdio.h>#include <memory.h>using namespace std;//递增bool increment(char *& data ,int length){    bool isFinish =false;//是否结束    int takeOver = 0;    int num;//各位的数    for(int i=length-1;i>=0;i--){        int num = data[i]-'0'+ takeOver;        if(i==length-1){            num++;        }        if(num>=10){            if(i==0){                isFinish = true;            }else{                num-=10;                takeOver = 1;                data[i] = '0'+num;            }        }else{            data[i]='0'+num;            break;        }    }    return isFinish;}//去头部的零输出void print(const char * data){    bool flag = true;    for(int i=0;data[i]!='\0';i++){        if(flag&&data[i]=='0'){            continue;        }        flag = false;        printf("%c",data[i]);    }}int main(){    int n;    char * ch;    scanf("%d",&n);    ch = new char[n+1];    memset(ch,'0',n);    ch[n]='\0';    while(!increment(ch,n)){        print(ch);        printf("\n");    }    return 0;}

0 0
原创粉丝点击