<script type="text/javascript">
//求一个数组内任意N个元素组合
function group(a, len){
var arr = a.slice(0),item = [arr.shift()];
(function func(item,arr){
var itemc,temp = arr.slice(0),l = len - item.length;
if( l == 0){
result.push(item);
}else if( l == 1){
for(var j in arr){
itemc = item.slice(0);
itemc.push(arr[j]);
result.push(itemc);
}
}else if( l > 1){
itemc = item.slice(0);
itemc.push(temp.shift());
func(itemc,temp);
item.length + temp.length >= len && func(item,temp);
}
})(item,arr);
arr.length >= len && group(arr, len);
return result;
} var arr=[2,3,2,1,3];//指定数组,计算所有情况组合
for(var l=2;l<arr.length;l++){
var result=[],temp=group(arr,l),str="";
for(var i=0;i<temp.length;i++){
str += "+"+temp[i].join("*");
}
document.write(l+"组合: "+str.substring(1)+"="+eval(str.substring(1))+"<br/>");
}
</script>
2组合: 2*3+2*2+2*1+2*3+3*2+3*1+3*3+2*1+2*3+1*3=47
3组合: 2*3*2+2*3*1+2*3*3+2*2*1+2*2*3+2*1*3+3*2*1+3*2*3+3*1*3+2*1*3=97
4组合: 2*3*2*1+2*3*2*3+2*3*1*3+2*2*1*3+3*2*1*3=96
//求一个数组内任意N个元素组合
function group(a, len){
var arr = a.slice(0),item = [arr.shift()];
(function func(item,arr){
var itemc,temp = arr.slice(0),l = len - item.length;
if( l == 0){
result.push(item);
}else if( l == 1){
for(var j in arr){
itemc = item.slice(0);
itemc.push(arr[j]);
result.push(itemc);
}
}else if( l > 1){
itemc = item.slice(0);
itemc.push(temp.shift());
func(itemc,temp);
item.length + temp.length >= len && func(item,temp);
}
})(item,arr);
arr.length >= len && group(arr, len);
return result;
} var arr=[2,3,2,1,3];//指定数组,计算所有情况组合
for(var l=2;l<arr.length;l++){
var result=[],temp=group(arr,l),str="";
for(var i=0;i<temp.length;i++){
str += "+"+temp[i].join("*");
}
document.write(l+"组合: "+str.substring(1)+"="+eval(str.substring(1))+"<br/>");
}
</script>
2组合: 2*3+2*2+2*1+2*3+3*2+3*1+3*3+2*1+2*3+1*3=47
3组合: 2*3*2+2*3*1+2*3*3+2*2*1+2*2*3+2*1*3+3*2*1+3*2*3+3*1*3+2*1*3=97
4组合: 2*3*2*1+2*3*2*3+2*3*1*3+2*2*1*3+3*2*1*3=96
解决方案 »
- 关于营业时间正则验证
- IE7,8怎样用Javascript控制在新选项卡中打开窗口
- 呼叫 !!!JavaScript打印,类似打印话费单 讨论!!!
- 谁知道雅虎widget简体中文版的官方地址啊?
- 一个关于正则表达式的问题
- 拖拽层到另外一个层的的里面
- js中的this指针问题,求解在线等待
- [推荐]几个做网页特效(或者其他Javascript东西)不可少的几个API
- 帮忙看看为什么返回undefined!!!
- 做的短消息提示的小浮动窗体,想让他2秒中自动关闭如何实现,具体代码如下
- 麻烦大家帮忙解密一下这个js
- 帮忙解决下这个错误。14.Caused by: java.lang.NoClassDefFoundError: Could not initialize cla
function calc(arr, n) {
var sum = function (arr) {
var result = 1;
for (var i = 0; i < arr.length; i++) {
result *= arr[i];
}
return result;
};
var loop = function (_arr, start, p, arr, callback) {
var result = 0;
var count = start;
arr = arr || [];
for (var i = start; i < _arr.length; i++) {
var tmparr = arr.slice(0).concat([_arr[i]]);
if (p < n) {
result += loop.call(null, _arr.slice(1), count, p + 1, tmparr);
}
if (tmparr.length == n) {
result += sum(tmparr);
}
count++;
}
return result;
};
return loop(arr, 0, 1);
}var a = [2, 3, 1, 3, 2];
console.log(calc(a, 2));//47
console.log(calc(a, 3));//97
console.log(calc(a, 4));//96//如果不嫌棄使用prototype的話Array.prototype.calc = function (n) {
return calc.call(null, this, n);
};console.log(a.calc(2));//47
console.log(a.calc(3));//97
console.log(a.calc(4));//96