• 杭电acm1009


    http://acm.hdu.edu.cn/showproblem.php?pid=1009

    贪心算法,以最大方式换得最大猫粮,先求猫粮的“性价比”,然后排序,再按性价比去依次将老鼠换完,得到结果

    View Code
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 struct fat{
     4            double t,j,f;
     5           };//使用数组,容易书写 
     6 int main()
     7 {
     8  int m,n,i,k;
     9  double sum;
    10  struct fat cat[1001],temp;
    11  while(scanf("%d%d",&m,&n)!=EOF)
    12     {
    13      if(m==-1&&n==-1) break;
    14      sum=0;
    15      for(i=0;i<n;i++)
    16         {
    17          scanf("%lf%lf",&cat[i].j,&cat[i].f);
    18          cat[i].t=cat[i].j/cat[i].f;  //求每个JavaBean的比重 
    19         }
    20       for(k=1;k<n;k++)
    21          {for(i=0;i<n-k;i++)
    22           {  
    23            if(cat[i].t<cat[i+1].t)
    24               {  
    25                temp=cat[i+1];
    26                cat[i+1]=cat[i];
    27                cat[i]=temp; //将它们进行降序排序 
    28               }    
    29           }} 
    30       for(i=0;i<n;i++)//这里的i<n是因为有可能猫粮够买下所有的食物 
    31          {
    32           if(m>=cat[i].f)
    33             {
    34              sum+=cat[i].j;
    35               m-=(int)cat[i].f;//如果猫有的猫粮比所需食物多,则换下比重最大的那个
    36             }
    37           else if(m<cat[i].f)
    38             {
    39              sum+=(cat[i].t*m); 
    40              m=0;
    41              break;//如果猫粮不足,则按比例换取,并退出 
    42             }
    43          }
    44       printf("%.3lf\n",sum);
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    正则表达式
    模块的初始
    装饰器 1
    匿名函数
    内置函数一(待跟新)
    python 学习迭代器的认识
    python 学习笔记 —— 函数的认识
    搭建yum 源
    python 学习第六天 文件的处理方式
    python 学习第五天 字典得 增删改查
  • 原文地址:https://www.cnblogs.com/huzhenbo113/p/2984371.html
Copyright © 2020-2023  润新知