用java:
整数1-33中间,任意取6个数,它们加起来的和是100.
希望能得到有多少种组合,以及具体组合结果。

解决方案 »

  1.   


    public class Test {
    int[] array;
    int count=0;
    void showArray(){
    String s = null;
    for(int i=0;i<array.length;i++)
    s=s+array[i]+",";
    System.out.println(s);
    }
    void checksum(int lefttime,int sum,int min,int max){
    if(lefttime==0){
    if(sum>=min&&sum<=max){
    array[lefttime]=sum;
    System.out.println(array[0]+","+array[1]+","+array[2]+","+array[3]+","+array[4]+","+array[5]);
    count++;
    }
    return;
    }
    for(int i=min;i<=max;i++){
    array[lefttime]=i;
    checksum(lefttime-1,sum-i,i,max);
    }
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test t=new Test();
    t.array=new int[6];
    t.checksum(5, 100, 1, 33);
    System.out.println("allcount:"+t.count);
    }}运行结果
    ...
    17,17,17,17,17,15
    20,16,16,16,16,16
    19,17,16,16,16,16
    18,18,16,16,16,16
    18,17,17,16,16,16
    17,17,17,17,16,16
    allcount:42828
      

  2.   

    int num=0;
        for (int n1 = 1; n1 <= 14; n1++) {
          for (int n2 = n1+1; n2 <= 33; n2++) {
            for (int n3 = n2+1; n3 <= 33; n3++) {
              for (int n4 = n3+1; n4 <= 33; n4++) {
                for (int n5 = n4+1; n5 <= 33; n5++) {
                  for (int n6 = n5+1; n6 <= 33; n6++) {
                    if(n1+n2+n3+n4+n5+n6==100){
                      System.out.println(n1+"+"+n2+"+"+n3+"+"+n4+"+"+n5+"+"+n6+"=100");
                      num=num+1;
                      break;
                    }
                  }
                }
              }
            }
          }
        }
        System.out.println("总共"+num+"组数字");
      

  3.   

    lip009(深蓝忧郁) 的 if(n1+n2+n3+n4+n5+n6==100)是否应再加上(n1!=n2&n2!=n3&n3!=n4&n4!=n5&n5!=n6)的判断? if(n1+n2+n3+n4+n5+n6==100 & n1!=n2&n2!=n3&n3!=n4&n4!=n5&n5!=n6)这样的结果才能做到每一位互不重复。
      

  4.   

    to: cpcyfun() ( ) 信誉:100    Blog 请看清楚我的每个循环的开始数字,是不会有重复值的!