别人做好的是js程序,不过我只能看到结果,我在PHP板块也发了个帖子,现在到js也来求一份程序答谢金额:¥150(支付宝 thx!)问题请参考:
http://topic.csdn.net/u/20110602/23/9b51da14-bf1e-4903-8e10-f80d013da69e.html?34020请使用js 得到我需要的函数之后我会通过支付宝给你表示感谢。
本人还未学习jquery 目前看不懂,所以莫用这个给我答案.
http://topic.csdn.net/u/20110602/23/9b51da14-bf1e-4903-8e10-f80d013da69e.html?34020请使用js 得到我需要的函数之后我会通过支付宝给你表示感谢。
本人还未学习jquery 目前看不懂,所以莫用这个给我答案.
就有25组这样的3位数的组合?
32
43
35
36
...
更多这个数据是用户选择的 也就是 位数和内容是不限制的
根据上面的数据得到31,32,35,36
31,32.35,43
31,32,36,43
31,35,36,43
...这个组合的位数是可控的,例如上面例子的组合是4位,可能我需要的是3位 或者更少的2位所有不重复组合再举个例子01,02
03,04
05,06
07,084位共16种组合
01+03+05+07
01+03+05+08
01+03+06+07
01+03+06+08
01+04+05+07
...这里例子都是4位的组合,我需要一个函数 能够根据自己需要的位数来得到最后需要的所有不重复组合.我找到一个函数可用,但是他没有实现自定义几位数的所有组合希望能够给到你们帮助
(function() {
dwn = function(a) {
document.writeln(a+"<br />")
};
var Cartesian = function(a,b) {
var ret=[];
for(var i=0;i<a.length;i++) {
for(var j=0;j<b.length;j++) {
ret.push(ft(a[i],b[j]));
}
}
return ret;
}
var ft = function(a,b) {
if(!(a instanceof Array))
a = [a];
var ret = Array.call(null,a);
ret.push(b);
return ret;
}
multiCartesian = function(data) {
var len = data.length;
if(len == 0)
return [];
else if(len == 1)
return data[0];
else {
var r=data[0];
for(var i=1;i<len;i++) {
r=Cartesian(r,data[i]);
}
return r;
}
}
})();
代码请参考
http://topic.csdn.net/u/20110602/23/9b51da14-bf1e-4903-8e10-f80d013da69e.html
var arr=[],sumArr=[],str,isBreak=false;
for(var i=0;i<m;i++){
arr.push(0);
}
for(var i=0;i<n;i++){
arr[i]=1;
}
str=arr.join('');
while(1){
var itemArr=[],
reg=/(.*?)(10)/;
for(var j=0,len=str.length;j<len;j++){
str.charAt(j)!="0"&&itemArr.push(j);
}
sumArr.push(itemArr);
if(reg.test(str)){
str=str.replace(reg,function(l,s1,s2){
var num=s1.replace(/0/g,"").length,
prefixstr="";
for(var i=0,len=s1.length;i<len;i++){
prefixstr+=(i<num?'1':'0');
}
return prefixstr+"01";
});
}else{
break;
}
}
return sumArr;
}function doubleCombo(arr,n){
var arrLen=arr.length,finalArr=[];
if(arrLen<n) {
alert("invalid input!");
return;
}
var comboCol=combo(arrLen,n);//行序号组合数
for(var i=0,cl=comboCol.length;i<cl;i++){//得到组合的每一项
var colItem=comboCol[i],items=[[]];
for(var j=0,il=colItem.length;j<il;j++){
var data=arr[colItem[j]];
if(typeof data=="number"){
for(var k=0,itemsLen=items.length;k<itemsLen;k++){
items[k].push(data);
}
}
else{
var mitems=[];
for(var m=0;m<items.length;m++){
for(var n=0;n<data.length;n++){
var mitem=items[m].concat([]);
mitem.push(data[n]);
mitems.push(mitem);
//console.log(mitem);
//console.log(mitems);
}
}
items=mitems;
}
}
finalArr=finalArr.concat(items);
}
return finalArr;
}
//下面是调用和结果显示var t=doubleCombo([32,[24,34,43,44,46,47],35,36,42],4)
for(var k=0,l=t.length;k<l;k++){
var a=t[k];
for(var j=0,l2=a.length;j<l2;j++)
document.write(a[j]+' ');
document.write('<br/>');
}
我只好向Jparser行礼,再次感谢.
什么时候想起来要宵夜了记得通知我.
结贴.