• HDOJ.2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)


    悼念512汶川大地震遇难同胞——老人是真饿了

    点我挑战题目

    题目分析

    每组数据给出所拥有的钱数,和大米的种类。每种大米给出单价(每单位重量)和大米的重量。求能买到的大米最大重量是多少?
    采用贪心算法。
    既然是重量最大,那么就按照每种大米的单价排序,有限购买单价小的,买完小的买大的即可。

    代码总览

    /*
        Title:HDOJ.2187
        Author:pengwill
        Date:2016-11-25
    */
    #include <iostream>
    #include <algorithm>
    #include <stdio.h>
    
    using namespace std;
    struct rice{
        int price;
        int weight;
        int total;
    }item[1005];
    bool cmp(rice a,rice b)
    {
        return a.price<b.price;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--){
            int money,n;
            scanf("%d %d",&money,&n);
            int i;
            for(i = 0;i<n;i++){
                scanf("%d %d",&item[i].price,&item[i].weight);
                item[i].total = item[i].price * item[i].weight;
            }
            sort(item,item+n,cmp);
            double ret = 0;
            for(i = 0;i<n;i++){
                if(money> item[i].total){
                    ret += item[i].weight;
                    money-=item[i].total;
                }else{
                    ret += 1.0 * money / item[i].price;
                    break;
                }
            }
            printf("%.2f
    ",ret);
        }
        return 0;
    }
    
  • 相关阅读:
    swift
    swift
    swift
    swift
    swift
    swift
    swift
    选择排序
    组合 和 继承
    Android中使用LitePal操控SQLite数据库
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367205.html
Copyright © 2020-2023  润新知