穷举一切可能的数值排列或组合
范例参数设置为'0123456789,任意6位数的所有排列。
程序代码
<script>
//排列
var j=0
function A(arr, num){
var r=[];
(function f(t,a,n){
if (n==0) { j++; return r.push(j+"."+t)};//
for (var i=0,l=a.length; i<l; i++){
f(t.concat(a[i]), a.slice(0,i).concat(a.slice(i+1)), n-1);
}
})([],arr,num);
return r;
}
var r2 = A("0123456789".split(""),6);
//document.write('0123456789,任意6位数的所有排列列举如:<ol><li>'+r2.join('</li><li>')+'</li></ol>');
document.write('0123456789,任意6位数的所有排列总数为'+j+';列举如下:<br>'+r2.join('<br>')+'');
//document.write('0123456789,任意6位数的所有排列总数为'+j);
</script>
另附:组合算法。
//组合
function C(arr, num){
var r=[];
(function f(t,a,n){
if (n==0) return r.push(t);
for (var i=0,l=a.length; i<=l-n; i++){
f(t.concat(a[i]), a.slice(i+1), n-1);
}
})([],arr,num);
return r;
}
改一改组合,算一算你中奖的机率,呵呵。