fengrunsheng
生活中本不缺少美,缺少的是发现美的眼睛!
级别: 网络英雄
精华主题: 0
发帖数量: 435 个
工控威望: 7091 点
下载积分: 19664 分
在线时间: 478(小时)
注册时间: 2014-09-07
最后登录: 2024-12-07
查看fengrunsheng的 主题 / 回贴
楼主  发表于: 2014-10-28 08:43

我认识了一个程序员,讲到我们毕业生出来工资大概多少的时候,他出了一道题,说,这个题目的月薪是1000 ,如果做不出 说明你现在可能还需要努力突破¥1000 ,而不是突破¥5000

请用程序打印出a b c d e f g h i j k l这十二个字符的全部组合,每种组合占一行
你的结果可能会是
a b c d e
a b c d f
……
请用任何你熟悉的语言写出程序

10分钟内完成,
fengrunsheng
生活中本不缺少美,缺少的是发现美的眼睛!
级别: 网络英雄
精华主题: 0
发帖数量: 435 个
工控威望: 7091 点
下载积分: 19664 分
在线时间: 478(小时)
注册时间: 2014-09-07
最后登录: 2024-12-07
查看fengrunsheng的 主题 / 回贴
1楼  发表于: 2014-10-29 13:14
引用
引用第3楼659888714于2014-10-28 11:04发表的  :
诸位大仙,近几天上网不方便,我自己搞了个利用循环嵌套的,一看就太拉杂了惭愧啊。
等随后再总结一下大家的方法,谢谢啦
以下我弄得代码暂时以数字代替字母,当排到12个数的时候就要算半个多小时了。
看来要排出26个字母真的不可行了。
////////////////////////////
.......

多个嵌套循环的办法是最容易想到的,并且是最笨的.
为什么不用"堆栈加递归"
fengrunsheng
生活中本不缺少美,缺少的是发现美的眼睛!
级别: 网络英雄
精华主题: 0
发帖数量: 435 个
工控威望: 7091 点
下载积分: 19664 分
在线时间: 478(小时)
注册时间: 2014-09-07
最后登录: 2024-12-07
查看fengrunsheng的 主题 / 回贴
2楼  发表于: 2014-10-29 13:20
<script>
var stack = new Array("a","b","c","d","e","f","g","h","i","j","k","l");
var buff = new Array();

function getComb(stack, buff)
{
        if(stack.length + buff.length < 5) return; //字母不够了,不用再试
        while(stack.length > 0) //字母还没用完
        {
                buff.push(stack.shift()); //选取字母
                if(buff.length < 5) //还没到5个字母
                {
                        getComb(stack.slice(0), buff.slice(0)); //继续选取
                }
                else if(buff.length == 5)
                {
                        document.write(buff+"<br>"); //够数量了,输出
                }
                buff.pop(); //丢弃用过的字母
        }

        return;
}
getComb(stack, buff);
</script>