以前,有个神秘的院子里面有三种苹果,每个苹果的数量是无限的。有一个小姑娘带了一个大袋子来到院子,她从来没见过这么多的苹果。每种苹果都有大小以及出售的价格,小姑娘想获得最大的利润,但是她不知道怎么才能做到。于是她来向你寻求帮助,你能告诉她能获得的最大价值吗? Input 第一行一个整数T(T <= 50),表示测试数据的组数。 每组测试数据有四行组成,前三行每行有两个整数S和P,分别表示每种苹果的大小(1 <= S <= 100)和价格(1 <= P <= 10000) 第四行有一个整数V(1 <= V <= 100,000,000)表示小姑娘袋子的大小。 Output 每组测试数据输出组数和小姑娘能得到的最大的价值。 Sample Input 1 1 1 2 1 3 1 6 Sample Output Case 1: 6
时间: 2024-02-16 19:04:17 浏览: 46
好的,以下是代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
const int N = 105, M = 1e8 + 5;
int s[N], p[N], dp[N][M];
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t ++)
{
memset(dp, 0, sizeof dp);
int V;
for (int i = 1; i <= 3; i ++)
cin >> s[i] >> p[i];
cin >> V;
for (int i = 1; i <= 3; i ++)
for (int j = 0; j <= V; j ++)
{
dp[i][j] = dp[i - 1][j];
for (int k = 1; k * s[i] <= j; k ++)
dp[i][j] = max(dp[i][j], dp[i - 1][j - k * s[i]] + k * p[i]);
}
cout << "Case " << t << ": " << dp[3][V] << endl;
}
return 0;
}
```
注意:本代码仅供参考,不能用于考试或提交AC代码。
阅读全文