面试题之陈利人 n位数字

来源:互联网 发布:linux中文输入法 apt 编辑:程序博客网 时间:2024/04/28 15:33

n位数字

  • 真言

干脆,直接,正直,勇敢,聪明,狂妄,猥琐,还有谁?---只有我!!!

  • 引言

这是我好几次做陈利人的题目,看到他有了一丝的喜爱,稍微的心动,希望爱人不要吃醋哟,哇,好酸呀。。。

  • 题目

给定数字n,请给出方法,打印出所有的位数是n的数字,并且每一个数字,每一位从左到右一次变大。

例如 n=3 时,(123,124,125,···,789)

  • 思路

先考虑输入n,n为数字,根据题意也只能为1~9.输入其他的要根据面试官的意图处理。
这个题目首先想到无非是循环嵌套呗,但是你嵌套几层呢,n层?哥们,n是一个未知数,你傻了吧,嘿嘿。

我觉得这个题目是归为数学排列组合的,有条件的渐增的排列组合。
这个题可以用递归函数去做,也可以使用非递归。我感觉非递归比较好,不会函数溢出,还是蛮棒的。那就是栈呗。栈里存放的是要求的结果。

拿个例子,看看我是怎么做的。
比如说 n=3

栈的元素变化情况,如下(不全,只有开始的地方)

。。。。。。。。。。。。。。。。。。。。。。。
    
大家注意一下,9已经到达最大值(注意不是每一位的最大值都是9,请思考),然后把前一位加一,扩展栈规模到n
一直到栈空,算法结束

  • 实验


  • 代码

test.cpp
#include<iostream>using namespace std;bool n_number(int n);void PutOutStack(int *s,int length);// main functionint main(){int i = 1;while(i <= 9){cout<<"n="<<i<<endl;n_number(i);cout<<endl;i++;}system("pause");return 0;}// the function to the problembool n_number(int n){if( n<1 || n>9 ){cout<<"exception of n_nember input "<<endl;system("pause");return false;}int* s = new int[n];int length = 0;// initialize stackint i = 0;while(i < n){s[i] = i+1 ;length ++ ;i++;}PutOutStack(s,length);// get all situationswhile(length != 0){// find the first number which can growwhile(length > 0){// top of stack add 1 if( s[length-1] < 9-n+length){s[length-1]++;break;}// stack pop else{s[length-1] = 0 ;length--;}}// stack is emptyif(length == 0)break;// stack pushwhile( length < n ){s[length] = s[length-1]+1;length ++;}PutOutStack(s,length);}return true;}// put out the stackvoid PutOutStack(int *s,int length){if(length != 0){int i = 0;while( i < length ){cout<<s[i];i++;}cout<<" ";}}


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 身份证掉了单位宿舍怎么办居住证 广州租住单位宿舍怎么办居住证 公司u盾丢了怎么办 北京办了居住卡怎么办延期 商铺被陌生人注册左公司怎么办 营业执照年检登录密码忘了怎么办 欠人家钱没钱还怎么办 欠钱实在没钱还怎么办 党关系丢了10年怎么办? 离婚后生孩子怎么办出生证明 注册公司没有注册地址怎么办 银行流水不够2倍怎么办 个体户小店怎么办五险 姓和名五行相克怎么办? 三星s7刷机后计算器没有了怎么办 线雕鼻子山根鼓怎么办 在日本没有日币怎么办 明知合同回扣特别高怎么办 医院药品断货了怎么办 空腹吃菠萝胃疼怎么办 小孩黑户口怎么办上户 别人说名字起大了怎么办? 念佛号时心老是不集中怎么办 扑lv期嗓子痛头痛怎么办 公众号忘记了账号怎么办 公众号账号密码忘记了怎么办 现实生活被小人缠上怎么办 五行缺木和水怎么办 八字火旺的人怎么办 综合旺衰得分负怎么办 妈妈误打死一只黄鼠狼怎么办 油笔画在白墙上怎么办 壁纸上的水彩笔怎么办 隐形拉链头脱了怎么办 拉链的一边掉了怎么办 帝豪gs加了乙醇汽油怎么办 命理五行缺木怎么办 微信改名含有特殊符号怎么办 户口名字打错了怎么办 寻仙会心几率差怎么办 注册商标下来了没收到怎么办