使用C语言实现代码:暗黑游戏中,装备直接决定玩家人物的能力。可以使用 Pg 和 Rune 购买需要的物品。暗 黑市场中的装备,每件有不同的价格(Pg 和 Rune)、能力值、最大可购买件数。Kid 作为暗 黑战网的一个玩家,当然希望使用尽可能少的 Pg 和 Rune 购买更优的装备,以获得最高的能 力值。请你帮Kid计算出现有支付能力下的最大可以获得的能力值。 输入格式: 第一行,三个整数 N,P,R,分别代表市场中物品种类,Pg 的支付能力和 Rune 的支付能力。 第 2..N+1 行,每行四个整数,前两个整数分别为购买此物品需要花费的 Pg,Rune,第 三个整数若为 0,则说明此物品可以购买无数件,若为其他数字,则为此物品可购买的最多 件数(S),第四个整数为该装备的能力值。 输出格式: 仅一行,一个整数,最大可获得的能力值。 输入样例: 3 10 10 5 3 0 110 4 3 4 120 2 3 1 130 输出样例: 370
时间: 2024-02-23 11:00:34 浏览: 150
用C语言的游戏代码
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct equip {
int pg; // 花费的 Pg
int rune; // 花费的 Rune
int num; // 最大可购买件数
int val; // 装备的能力值
} Equip;
int cmp(const void *a, const void *b) {
Equip *ea = (Equip *)a, *eb = (Equip *)b;
if (ea->pg != eb->pg) return ea->pg - eb->pg;
if (ea->rune != eb->rune) return ea->rune - eb->rune;
return eb->val - ea->val;
}
int main() {
int n, p, r;
scanf("%d %d %d", &n, &p, &r);
Equip *equip = (Equip *)malloc(n * sizeof(Equip));
for (int i = 0; i < n; i++) {
scanf("%d %d %d %d", &equip[i].pg, &equip[i].rune, &equip[i].num, &equip[i].val);
}
qsort(equip, n, sizeof(Equip), cmp); // 按花费从小到大排序,若花费相同则按能力值从大到小排序
int sum = 0; // 能力值之和
for (int i = 0; i < n && p >= 0 && r >= 0; i++) {
if (equip[i].pg > p || equip[i].rune > r) continue; // 超过了支付能力则跳过
int num = equip[i].num == 0 ? 1 : equip[i].num; // 计算购买数量
num = p / equip[i].pg < num ? p / equip[i].pg : num;
num = r / equip[i].rune < num ? r / equip[i].rune : num;
sum += num * equip[i].val; // 更新能力值之和
p -= num * equip[i].pg; // 更新 Pg 的余额
r -= num * equip[i].rune; // 更新 Rune 的余额
}
printf("%d\n", sum);
free(equip);
return 0;
}
```
阅读全文