文章

4

粉丝

159

获赞

2

访问

1.0k

头像
喝饮料 题解:贪心,按照性价比最高的方式来买饮料
P1478 云南大学机试题
发布于2024年3月13日 16:03
阅读数 249

#include <stdio.h>  // 引入标准输入输出库
#include <stdlib.h> // 引入标准库,用于 qsort 函数

// 定义一个结构体来存储饮料的价格、毫升数和性价比
typedef struct{
    double key;   // 价格
    double value; // 毫升数
    double ratio; // 性价比,即 value/key
} KV;

// 比较函数,用于 qsort,比较两个 KV 结构体的性价比
int compare(const void *a, const void *b){
    KV *kvA = (KV *)a; // 类型转换,从 void* 到 KV*
    KV *kvB = (KV *)b; // 类型转换,从 void* 到 KV*
    if (kvB->ratio > kvA->ratio) return 1; // 如果 b 的性价比更高,返回 1
    if (kvB->ratio < kvA->ratio) return -1; // 如果 a 的性价比更高,返回 -1
    return 0; // 如果性价比相等,返回 0
}

// 主函数
int main(){
    int x, n; // x 是小明手里的钱,n 是饮料的种类数
    // 无限循环,直到输入为 -1 -1 时退出
    while(1){
        scanf("%d %d", &x, &n); // 读取 x 和 n 的值
        if(x == -1 && n == -1){ // 检查是否应该结束程序
            break; // 结束循环
        }
        KV Hash[n]; // 创建一个 KV 类型的数组,用于存储所有饮料的信息
        double result = 0; // 用于存储小明能喝到的饮料总量
        // 循环读取每种饮料的信息
        for(int i = 0; i < n; i+...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发