1 假设现有壹元,贰元,伍元,拾元的纸币若干张。
2 如果需要155元现金
3 要求纸币的数量等于20。请编写程序找出组成这155元现金的方式,即多少张一元的,多少二元的,多少张伍元的,多少张拾元的?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tteesstt】截止到2008-07-30 13:02:21的历史汇总数据(不包括此帖):
    发帖的总数量:139                      发帖的总分数:9000                     每贴平均分数:64                       
    回帖的总数量:95                       得分贴总数量:11                       回帖的得分率:11%                      
    结贴的总数量:138                      结贴的总分数:8900                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:99.28 %               结分的百分比:98.89 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    值得尊敬

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=tteesstt
      

  2.   


                    List li = new ArrayList();
    int all = 155;
    for(int i=1;i<=all/10;i++){
    int all2 = all - i*10;
    for(int j=0;j<=all/5;j++){
    int all3 = all2 - 5*j;
    for(int m=0;m<all3/2;m++){
    int n = all3 - 2*m;
    if(i+j+m+n==20){
    li.add(i+"+"+j+"+"+m+"+"+n);
    }
    }
    }
    }
    System.out.println(li.size());
    for(int i=0;i<li.size();i++){
    System.out.println(li.get(i));
    }
    期待更优算法的出现
      

  3.   

    List li = new ArrayList();
          int all = 155;
          for(int i=1;i<=all/10;i++){
           int all2 = all - i*10;
           if((all2/5)>(20-i))
           {
           continue;
           }else{
              for(int j=0;j<=all/5;j++){
               int all3 = all2 - 5*j;
               if((all3/2)>(20-i-j))
               {
              continue; 
               }else{
                  for(int m=0;m<all3/2;m++){
                   int n = all3 - 2*m;
                   if(n>(20-i-j-m))
                   {
                 continue;  
                   }else{
                      if(i+j+m+n==20){
                          li.add(i+"+"+j+"+"+m+"+"+n);
                      }
                   }
                  }
                }
              }
          }
          }
          System.out.println(li.size());
          for(int i=0;i<li.size();i++){
              System.out.println(li.get(i));
          }
      

  4.   

    long begin=System.currentTimeMillis();
          List li = new ArrayList();
          long all = 15555l;
          for(int i=1;i<=all/10;i++){
           long all2 = all - i*10;
           if((all2/5)>(2000-i))
           {
           continue;
           }else{
              for(int j=0;j<=all/5;j++){
               long all3 = all2 - 5*j;
               if((all3/2)>(2000-i-j))
               {
              continue; 
               }else{
                  for(int m=0;m<all3/2;m++){
                   long n = all3 - 2*m;
                   if(n>(2000-i-j-m))
                   {
                 continue;  
                   }else{
                      if(i+j+m+n==2000){
                          li.add(i+"+"+j+"+"+m+"+"+n);
                      }
                   }
                  }
                }
              }
          }
          }
          System.out.println(li.size());
          for(int i=0;i<li.size();i++){
              System.out.println(li.get(i));
          }
         long end=System.currentTimeMillis();
         System.out.println(end-begin);
      

  5.   

    public class www {
    static int x;//一元的个数
    static int y;//二元的个数
    static int z;//五元的个数
    static int h;//拾元的个数
    public static void main(String[] arguments){
    for(x=0;x<155;x++){
    for(y=0;y<155;y++){
     for(z=0;z<155;z++){
          for(h=0;h<155;h++){
          if(x+2*y+5*z+10*h==155&&x+y+z+h==20){
          System.out.println(x);
          System.out.println(y);
          System.out.println(z);
          System.out.println(h);
          System.out.println("*");
          }
          }
     }

    }
    }
    }
    }
    哈哈,可以吧
      

  6.   

    public class Count {
    static int x;//一元的个数
    static int y;//二元的个数
    static int z;//五元的个数
    static int h;//拾元的个数
    public static void main(String[] arguments){
    for(x=0;x <20;x++){
    for(y=0;y <20;y++){
    for(z=0;z <20;z++){
        for(h=0;h <20;h++){
        if(x+2*y+5*z+10*h==155&&x+y+z+h==20){
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(h);
        System.out.println("*");
        }
        }
    }}
    }
    }
    }
    这样不更好?
      

  7.   

    public class Practise {    /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {        System.out.println("1元" + " 2元" + " 5元" + " 10元");
            int x1 = 0;
            for (int x10 = 155 / 10; x10 >= 0; x10--) {
                for (int x5 = 20 - x10; x5 >= 0; x5--) {
                    for (int x2 = 20 - x10 - x5; x2 >= 0; x2--) {
                        x1 = 20 - x10 - x5 - x2;
                        if (x1 + 2 * x2 + 5 * x5 + 10 * x10 == 155) {
                            System.out.println(" " + x1 + "  " + x2 + "  "
                                    + x5 + "  " + x10);
                        }
                    }
                }
            }
        }
    }