永发信息网

【js二维数组】求助JS二维数组从N个项取M个进行排列的组合算法函数如数组:arr1=[...

答案:2  悬赏:50  手机版
解决时间 2021-02-22 22:19
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-02-21 21:28
【js二维数组】求助JS二维数组从N个项取M个进行排列的组合算法函数如数组:arr1=[...
最佳答案
  • 五星知识达人网友:酒者煙囻
  • 2021-02-21 22:14
【答案】 var arr1 = [];//你的原始数组function getArr(m,n){var rt = [];for(var i=0;i<m;i++){var arr = arr1.concat();arr.splice(i,1);getNext(arr,n-1);}return rt;function getNext(arr,n){if(!n){return rt.push(arr);}for(var i=0;arr[i];i++){var _arr = arr.concat();_arr.splice(i,1);getNext(_arr,n-1);}}}getArr(arr1.length,arr1.length - (arr1.length * Math.random() | 0));//这个也是随机的 m应该就是arr1数组的长度 n要说才是真正随机 第二个参数实际是m-n 追问: 好像不行啊 var arr=[[1,2,3],[3,6],4,6,[3,4]]; var arr2=getArr(arr.length,2); //alert(arr2[0].length); //alert(arr2[0][0].length) alert(arr2.length);//输出为0,正常的C(5,2)应该是10啊 追答: arr1=[[1,2,3],[3,6],4,6,[3,4]]; 你题目是arr1 我里面提到的是arr1 你现在用arr肯定不行 追问: 因为新手, 刚才无看清,不好意思,还有以下问题麻烦解决一下 arr1=[[1,2,3],[3,6],4,6,[3,4]]; var arr2=getArr(arr1.length,3); alert(arr2[.length) //输出60,应该C(5,3)=C(5,2)=10,不需要排序的 追答: arr1=[[1,2,3],[3,6],4,6,[3,4]];function getArr(m,n){ var rt = []; for(var i=0;i<m;i++){ getNext([i],n-1,i+1); } for(var i=0,row;row = rt[i];i++){ var cell = []; for(var j in row){ cell = cell.concat([arr1[row[j]]]); } rt[i] = cell; } return rt; function getNext(arr,n,index){ if(!n){ return rt.push(arr); } for(var i=index;i<m;i++){ getNext(arr.concat(i),n-1,i+1); } }}getArr(arr1.length,arr1.length * Math.random() | 0);换个思路 就是你要的答案了、 请试用 好的话 请采纳
  现在的n是选择的多少个
  
全部回答
  • 1楼网友:时间的尘埃
  • 2021-02-21 23:54
这个问题的回答的对
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯