纯属无聊玩贪心

xiaoxiao2021-02-28  109

package test; /**  * @author:Avery  * @description:贪心算法求找钱张数最小最优解  还可以优化  在次就不优化了  * @date:2017年7月10日  */ public class Test { public static void test(double money){  // 钱面币 100  50  20  10  5  1  0.5元  0.1元  //double[]n={100,50,20,10,5,1,0.5,0.1};//存放人民币面额  //int n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0;  int n[]=new int[]{0,0,0,0,0,0,0,0};  if((int)(Math.log10(money))+1>=3){      n[0]=(int)(money)/100;//n1存放面值为100的数量  求余只能针对于整数   money-=n[0]*100;  }  if(money>=50){    n[1]=1;    money-=50;  }  if(money>=40){   n[2]=2;   money-=40;  }else if(money>=20){   n[2]=1;   money-=20;  }  if(money>=10){      n[3]=(int)(money)/10;      money-=n[3]*10;  }  if(money>=5){   n[4]=1;   money-=5;  }  if(money>=1){   n[5]=(int)money;  }  if(money<1&&money>=0.5){   n[6]=1;   money-=0.5;  }  if(money>0){   n[7]=(int)(money*10);  }  System.out.println("100的"+n[0]+" 50的"+n[1]+" 20的"+n[2]+" 10的"+n[3]+" 5的"+n[4]+" 1的"+n[5]+" 0.5的"+n[6]+" 0.1的"+n[7]);  int sum=0;  for(int i=0;i<n.length;i++){   sum+=n[i];  }  System.out.println("共"+sum+"张"); } public static void main(String[] args) {  test(475.8);//4 1 1 1 1 3 共11张  test(325);// 3 1 1  共5  test(11105.5);//111  1  1  共113 } }
转载请注明原文地址: https://www.6miu.com/read-44589.html

最新回复(0)