输入数字n,按顺序输出从1到最大的n位10进制数
2013-07-16 21:50
459 查看
/* copyright@nciaebupt 转载请注明出处 题目:输入数字n,按顺序输出从1到最大的n位10进制数。比如输入3,则输出1、2、3 一直到最大的3位数即999。 分析:如果我们在数字前面补0的话,就会发现n位所有10进制数其实就是n个从0到9的全排列。也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的10进制数。只是我们在输出的时候,数字排在前面的0我们不输出罢了。 全排列用递归很容易表达,数字的每一位都可能是0到9中的一个数,然后设置下一位。递归结束的条件是我们已经设置了数字的最后一位。 */ #include <cstdlib> #include <iostream> void printNumber(char * number, int len){ if(number == NULL){ return; } bool beginFlag = true; for(int i = 0; i < len; ++i){ if(beginFlag == true && number[i] != '0'){ beginFlag = false; } if(beginFlag == false){ std::cout<<number[i]; } } std::cout<<std::endl; return; } void printOne2MaxOfNRecursive(char * number, int len, int index){ if(number == NULL || len < 0){ return; } if(index == len -1){ printNumber(number, len); return; } for(int i = 0; i < 10; ++i){ number[index + 1] = i + '0'; printOne2MaxOfNRecursive(number, len, index + 1); } } void printOne2MaxOfN(int n){ if(n < 0){ return; } char * number = new char[n+1]; for(int i = 0; i < n; ++i){ number[i] = '0'; } number = '\0'; for(int i = 0; i < 10; ++i){ number[0] = i + '0'; printOne2MaxOfNRecursive(number, n, 0); } if(number != NULL){ delete [] number; number = NULL; } return; } int main(int argc, char ** argv){ int n = 3; printOne2MaxOfN(n); system("pause"); return 0; }
相关文章推荐
- 输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数
- 打印输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。
- 输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
- 输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3
- 输入数字n,按顺序输出从1最大的n位10进制数
- C#--第2周实验--任务10--编写一个控制台应用--输入一个整数,将其各位数字颠倒顺序后输出
- 输入一串字符,只包含“0-10”和“,”,找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数
- 输入16进制的数字输出10进制
- 1、 输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。
- 输入一个字符串只包含“0~10”和”,“找出最小的数字和最大的数字(可能不止一个),输出最后剩余数字的个数,如输入”3,3,4,5,6,7,7“
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- input 输入数字而且最大为10
- 指针初接触,输入三个数字,按照从大到小的顺序输出
- 从键盘上连续录入一批整数,比较并输出其中的最大值和最小值,当输入数字0时结束循环
- 输入2进制转换成10进制从屏幕上输出
- 输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
- 题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来 提示:需要排数的数字通过参数传递进来, 例如:输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1
- 6、 java 输入一个数字组成的数组,输出该数组的最大值和最小值
- input 输入数字而且最大为10