java组合请求

时间:2017-04-19 07:44:53

标签: java arrays

三个整数数组a [],b [],c []。数组长度是可变的,并且每个数组中的数字不能重复。 a []中的数字取0到13,长度至少为9,b []中的数字取自[],c []中的数字取自b []。从三个数组中取9个数字,每个数组中的每个数字只能占用1次,得到组合数。

例1:

a[]={0,1,2,3,4,5,6,7,8}

b[]={1,2}

c[]={1}

return totalCount=6;

因为(' a'表示来自数组a [])

  0,1a,2a,3,4,5,6,7,8;

  0,1a,2b,3,4,5,6,7,8;

  0,1b,2a,3,4,5,6,7,8;

  0,1b,2b,3,4,5,6,7,8;

  0,1c,2a,3,4,5,6,7,8;

  0,1c,2b,3,4,5,6,7,8;

例2:

  a[]={0,1,2,3,4,5,6,7,8,9,10,11,12}

  b[]={0,1,2,3,4}

  c[]={0,1,2,3,4}

  return totalCount=47985

我做了一些工作,但它只在c []的长度为0或[] == 9

的长度时有效
int num=0;
    if(a.size()<9){
        num = 0;
    }else{
        if(b.size()==0){
                num= combineNum(a.size(),9).intValue();
        }else{
            if(three.size()==0){
                    num=combineNum(a.size(),9).intValue();
                    for(int i=1;i<=b.size();i++){
                        num=num+combineNum(a.size()-i,9-i).intValue()
                                *combineNum(b.size(),b.size()-i).intValue();
                    }
            }else{
                if(c.size()==b.size()){
                    if(a.size()==9){
                        num=(int)Math.pow(3,c.size());
                    }else{
                        num=combineNum(a.size(),9).intValue();
                        for(int i=1;i<=b.size();i++){
                            if(i==1){
                                num=num+combineNum(a.size()-i,9-i).intValue()
                                        *combineNum(2*b.size(),i).intValue();
                            }else{
                                num=num+combineNum(a.size()-i,9-i).intValue()
                                        *(combineNum(2*b.size(),i).intValue()-
                                        b.size()*combineNum(2*b.size()-2*(i-1),i-1).intValue());
                            }
                        }
                    }
                }else {
                    if(a.size()==9){
                        num= (int)(Math.pow(3,c.size())*Math.pow(2,b.size()-c.size())
                                *combineNum(a.size(),9).intValue());
                    }else{
                        num=-1;
                    }
                }
            }
        }
    }
    return num;

任何人都可以帮助我吗?

我需要从三个数组中获取9个数字,数字可以来自任何数组,但不能重复。就像我的代码一样,我计算了计数,而c.length == 0或a.length == 9.任何人对其他情况都有任何想法?

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。 把我的代码放在下面

$("#dt1").datepicker({
    dateFormat: "dd-M-yy",
    minDate: 0,
    onSelect: function (date) {
        var dt2 = $('#dt2');
        var startDate = $(this).datepicker('getDate');
        var minDate = $(this).datepicker('getDate');
        dt2.datepicker('setDate', minDate);
        startDate.setDate(startDate.getDate() + 360);
        //sets dt2 maxDate to the last day of 30 days window
        dt2.datepicker('option', 'maxDate', startDate);
        dt2.datepicker('option', 'minDate', minDate);
        $(this).datepicker('option', 'minDate', minDate);
    }
});
$('#dt2').datepicker({
    dateFormat: "dd-M-yy"
});

答案 1 :(得分:0)

计算每个数字重复并乘以它们的次数,这些是非常简单的数学

一个[] = {0,1,2,3,4,5,6,7,8}

B [] = {1,2}

C [] = {1}

你有3个人和2个人,所以你将拥有:

1(0)* 3(可能的)* 2(可能的两个)* 1(3)* 1(4)* 1(5)* 1(6)* 1(7)* 1(8)= 6