现在遇到一个难题请教高人:有点急,请快一点,好的再咖分哦
有1,2,5,10,20,50,100的整数,要求:写一个Java类,提供计数函数,参数前面提供的数,返回值组合总数

解决方案 »

  1.   


    看看这个应该能帮到你的:package addvalue;import java.util.*;public class Suanfa {
    private static final int[] e = {100,50,20,10,5,2,1}; 
            
      /**
       * 规范版
       */
      public static int fun(int M){
        int n = 0;  //记录组合数
        for(int i : e){
          if(M >= i){  //i为选取值的最大值,从2分开始设计算法
            int a = M/i;  //M是i的a倍,a至少是1
            if(M%i == 0)
              n += 1+fun(i-1)*(a-1);  //1代表采用a个值i的组合有一种
            else
              n += fun(M%i)+fun(i-1)*(a-1);//fun(M%i)代表采用a个值i的组合有fun(M%i)种
          }
        }
        return n;
      }
            
      public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        for(int M=0;true;M=s.nextInt())
          System.out.println(
                "\t组合数为(fun(int M)) : "+fun(M)+"\n"
                +"\t组合数为 ($fun(int M)): "+$fun(M)
                );
        }
            
        /**
        * 精简版
        **/
        public static int $fun(int M){
          int n = 0;  //记录组合数
          for(int i : e)
            if(M >= i)
              n += fun(i-1)*(M/i-1) + (M%i==0 ?1 :fun(M%i));
          return n;
        }
    }