zoukankan      html  css  js  c++  java
  • 杭电oj 1009 FatMouse' Trade

    Tips:本题采用贪心算法,类似于背包问题,关键在于读入数据之后,将数据按 J[i]/F[i] 从大到小排列即可。

     1 /**本程序主要采用贪心算法思想,类似于背包问题*/
     2 #include<stdio.h>
     3 #include<string.h>
     4 int main()
     5 {
     6     int M,N;
     7     while(scanf("%d %d",&M,&N))
     8     {
     9         if(M == -1 && N == -1)
    10         {
    11             return 0;
    12         }
    13         double J[1000]={0},F[1000]={0};
    14         double sum = 0.0;
    15         int i,j,t;
    16         //将j[i]和f[i]读取出来
    17         for(i = 0;i < N;i++)
    18         {
    19             scanf("%lf %lf",&J[i],&F[i]);
    20         }
    21         //按照J[i]/F[i]非递增排序
    22         for(i = 0;i < N-1;i++){
    23               for(j = i;j < N-1;j++){
    24                   if((J[i]/F[i])<(J[j+1]/F[j+1])){
    25                      t=J[i],J[i]=J[j+1],J[j+1]=t;
    26                      t=F[i],F[i]=F[j+1],F[j+1]=t;
    27                   }
    28               }
    29           }
    30         //采用贪心进行计算
    31         for(i = 0;i<N;i++)
    32         {
    33             if(M==0)
    34             {
    35                 break;
    36             }
    37             if(M != 0 && F[i] <= M)
    38             {
    39                 sum += J[i];
    40                 M -= F[i];
    41             }else if(M !=0 && F[i]>M)
    42             {
    43                 sum += J[i]*M/F[i];
    44                 M -= M;
    45             }
    46         }
    47         //输出结果
    48         printf("%0.3f
    ",sum);
    49 
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    cp
    usr/sbin/inetd
    mysql
    Iptables的规则语法
    CentOS系统安装过程中配置软RAID-0或RAID-1
    25道shell面试题
    虚拟机
    进入单用户模式
    正则表达式
    js操作div的显隐
  • 原文地址:https://www.cnblogs.com/wujiyang/p/4559612.html
Copyright © 2011-2022 走看看