打印1到最大的n位数 ,给 3 ,打出1,2,3,.....999

来源:互联网 发布:mac手绘软件 编辑:程序博客网 时间:2024/05/16 08:37
/*    12.打印1到最大的n位数 ,给 3 ,打出1,2,3,.....999    数字转换成字符集合的全排列问题,前面为0的不打出来    解决了n比较大 溢出的问题*///098->98void printnum(char* num){    int flag = false;//默认开头有‘0’    int len = strlen(num);    for (int i = 0; i < len; ++i)    {        if (!flag && num[i] != '0')            flag = true;        if (flag)            cout << num[i];    }    cout << endl;}void printOneToMaxdigitRec(char*number, int length, int index){    if (index == length - 1)//遍历到数组的最后一位,打印返回    {        printnum(number);        return;    }    for (int i = 0; i < 10; ++i)    {        number[index + 1] = i + '0'; //下一位set 0~9        printOneToMaxdigitRec(number, length, index + 1);//递归设置    }}void printMaxdigit(int n){    if (n <= 0)        return;    char* number = new char[n + 1];//'\0'    number[n] = '\0';    for (int i = 0; i < 10; ++i)    {        number[0] = i + '0';                //设置首位从0~9        printOneToMaxdigitRec(number,n,0);  //递归打印不同首位的全排列    }    delete[]number;}
3 0
原创粉丝点击