排列组合问题,求编程解决

假设,a+b+c+d+e=6其中,a,b,c,d,e=0,1,2求,①a,b,c,d,e的所有排列组合,并且以a:b:c:d:e的方式写出来。②若a,b,c,d,e=0,... 假设,a+b+c+d+e=6
其中,a,b,c,d,e=0,1,2
求,①a,b,c,d,e的所有排列组合,并且以a:b:c:d:e的方式写出来。②若a,b,c,d,e=0,1,2,3,要求如①。
请编程高手帮忙解决问题,要求写出两个问题的所有结果。结果可以罗列在笔记本上以附件上传以提供下载。
展开
 我来答
zwf2zxn
2018-12-27 · TA获得超过289个赞
知道小有建树答主
回答量:270
采纳率:85%
帮助的人:104万
展开全部
var digits = 5;				
var base1   = [0,1,2];
var base2   = [0,1,2,3];
//解答①
var res1 = getResults(digits, base1);
console.log(res1);
//解答②
var res2 = getResults(digits, base2);
console.log(res2);

//获取满足条件的结果
function getResults(digits, baseArr)
{
var res = {'groups':[], 'results':[],'count':0};

var groups = getAllGroups(digits, baseArr);
groups.forEach(function(group){
var sum = 0;
group.forEach(function(v){
sum += v;
});
if(sum == 6){
res['groups'].push(group);
res['results'].push('a:b:c:d:e = '+group.join(':'));
}
});
res['count'] = res['groups'].length;

return res;
}

//获取所有组合
function getAllGroups(digits, baseArr)
{
//保存所有的排列组合
var groups = [];
//默认第一个组合为都选第一个选项, 如[0,0,0,0,0]
groups[0] = [];
for(var i=0; i<digits; ++i)
groups[0].push(baseArr[0]);
var count = baseArr.length;

//获取所有排列组合:根据排列数位的个数   逐一改变某个数位的值
for(var i=0; i<digits; ++i)
{
var len = groups.length;
//当前组合下  第i位的不同组合
for(var j=0; j<len; ++j)
{
var toString = JSON.stringify(groups[j]);//先转字符串防止传址赋值
for(var k=1; k<count; ++k)
{
var temp = JSON.parse(toString);//再转回数组
temp[i] = baseArr[k];
groups.push(temp);
}
}
}

return groups;
}
追问
谢谢大神!只是,这程序在什么语言上运行?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式