c语言写出礼物的最大值的代码
时间: 2023-09-16 12:07:39 浏览: 54
好的,以下是一个简单的 C 代码实现,用于找到在给定预算下可以购买的礼物的最大价值。假设您有一个包含每件礼物的价格和价值的结构体数组 items[]:
```
#include <stdio.h>
#define MAX_N 1000
typedef struct {
int price;
int value;
} Item;
int dp[MAX_N + 1];
int max(int a, int b) {
return (a > b ? a : b);
}
int main() {
int n, budget;
Item items[MAX_N];
printf("请输入礼物数量:");
scanf("%d", &n);
printf("请输入每个礼物的价格和价值:\n");
for (int i = 0; i < n; i++) {
scanf("%d %d", &items[i].price, &items[i].value);
}
printf("请输入预算:");
scanf("%d", &budget);
for (int i = 0; i < n; i++) {
for (int j = budget; j >= items[i].price; j--) {
dp[j] = max(dp[j], dp[j - items[i].price] + items[i].value);
}
}
printf("可以购买的礼物的最大价值为:%d\n", dp[budget]);
return 0;
}
```
在这个程序中,我们使用了动态规划的思想。我们定义一个数组 dp[],其中 dp[i] 表示在预算为 i 的情况下可以购买的礼物的最大价值。我们使用一个双重循环,第一重循环遍历所有的礼物,第二重循环从预算 budget 开始逆序遍历,用当前礼物的价格和价值更新 dp[] 数组。最终,dp[budget] 就是我们要的答案,即给定预算下可以购买的礼物的最大价值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)