PAT Basic Level 1020

AC代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 struct mk
 4 {
 5     double storage;
 6     double sumPrice;
 7     double perPrice;
 8 };
 9 int cmp(const void *a,const void *b)           //用于qsort按照单价排序 
10 {
11     struct mk m1 = *(struct mk*)a;
12     struct mk m2 = *(struct mk*)b;
13     return m2.perPrice > m1.perPrice?1:-1;          //仔细思考这一行 
14 }
15 int main ()
16 {
17     int num;
18     double need;
19     double ret = 0.0;
20     scanf("%d %lf",&num,&need);
21     struct mk list[1100];
22     int i;
23     for(i = 0;i < num;i++)
24     {
25         scanf("%lf",&list[i].storage);
26     }
27     for(i = 0;i < num;i++)
28     {
29         scanf("%lf",&list[i].sumPrice);
30     }
31     for(i = 0;i < num;i++)                       //以上为输入 
32     {
33         list[i].perPrice = list[i].sumPrice/list[i].storage;    
34     }
35     qsort(list,num,sizeof(list[0]),cmp);
36     i = 0;
37     while(need != 0)
38     {
39         if(need > list[i].storage)          //需求大于库存 
40         {
41             need = need - list[i].storage;
42             ret = ret + list[i].sumPrice; 
43             if( i == num-1)                     //全部用完还是没满足需求 
44             {
45                 need = 0;
46             }
47         }
48         else                       //需求小于库存 
49         {
50             ret = ret + list[i].perPrice * need;
51             need = 0;
52         }
53         i++;
54     }
55     printf("%.2lf
",ret);                   
56     return 0 ;
57 }
原文地址:https://www.cnblogs.com/Ponytai1/p/5976507.html