排列组合问题,求编程解决
假设,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,要求如①。
请编程高手帮忙解决问题,要求写出两个问题的所有结果。结果可以罗列在笔记本上以附件上传以提供下载。 展开
其中,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,要求如①。
请编程高手帮忙解决问题,要求写出两个问题的所有结果。结果可以罗列在笔记本上以附件上传以提供下载。 展开
展开全部
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;
}
追问
谢谢大神!只是,这程序在什么语言上运行?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询