不能限个数,二个也行,三个也行,只要MONEY加起来等于6645即可.
我已经写了一个,用PB写的,但不知道对不对,因为结果是找不到.

解决方案 »

  1.   

    QTYMONEY
    13238
    12008.5
    11305
    11455
    11079
    11528.5
    11918.5
    23231.5
    24616
    24017
    22937
    现有数据如上,想找出MONEY的组合等于6645的记录,怎么找呢?如果没有就返回NULL.
    请各位大侠帮我找找,或者给个结果就行.什么样的组合?加减?乘除?
      

  2.   

    <script>
    //ar数组
    //rs组合的结果
    //flag加减乘除的+-*/
    var numar=new Array(0,0,1,1,-1,1,2,3,4,5,7,0,-1);
    function Generate_Permutations(ar,rs,flag)
    {

    var sum=new Array();
    if(!ar || ar.length<=1 )return sum;
    ar.sort();
    var tvar;
    var result = new Array();
    tvar = ar[ar.length-1] >=0 ? ar[ar.length-1]:"("+ar[ar.length-1]+")";
    result.push(tvar);

    for(var i=ar.length-2 ;i>=0;i--)
    {
    var count = result.length;
    tvar = ar[i]>=0 ? ar[i]:"("+ar[i]+")";
    for(var j=0;j<count;j++)
    {
    var tmp=tvar+flag+result[j];
    eval("var v="+tmp);
    if(v==rs){(sum[tmp+"="+rs]++)||(sum[tmp+"="+rs]=1);}
    result.push(tmp);
    }
    result.push(tvar);
    }
    return sum;
    }
    var ar=Generate_Permutations(numar,8,"+");
    for( x in ar)
    document.write(x+"<br>");
    </script>
      

  3.   

    那把重复的去掉
    <script>
    //ar数组
    //rs组合的结果
    //operate: 
    //0:-
    //1:+
    //2:*
    //3:0
    var numar=new Array(0,0,-1,-2,-3,-4,1,2,3,4,7,14);
    function Generate_Permutations(ar,rs,operate)
    {
    var sum=new Array();
    var flag="+";var tvar,tmp;
    switch(operate)
    {
    case 0:flag="-";break;
    case 1:flag="+";break;
    case 2:flag="*";break;
    case 3:flag="/";break;
    default:{operate=1;flag="+";}
    }
    tvar = ar.join(",");tmp=tvar.replace(/,?0,?/g,"");;
    tvar= tvar.length > tmp.length?tmp+",0":tmp;
    ar=tvar.split(",");
    if(!ar || ar.length<=1 )return sum;
    ar.sort();
    if((operate==0 && rs>=0)|| operate==3 )ar.reverse();
    var result = new Array();
    tvar = ar[ar.length-1] >=0 ? ar[ar.length-1]:"("+ar[ar.length-1]+")";
    result.push(tvar);

    for(var i=ar.length-2 ;i>=0;i--)
    {
    var count = result.length;
    tvar = ar[i]>=0 ? ar[i]:"("+ar[i]+")";
    for(var j=0;j<count;j++)
    {
    tmp=tvar+flag+result[j]
    eval("var v="+tmp);
    if(v==rs){(sum[tmp+"="+rs]++)||(sum[tmp+"="+rs]=1);}
    result.push(tmp);
    }
    result.push(tvar);
    }
    return sum;
    }
    var ar=Generate_Permutations(numar,7,1);
    for( x in ar)
    document.write(x+"<br>");
    </script>