解题思路:
注意事项:
参考代码:
#include<iostream>
using namespace std;
const int S = 28;
int M;//拥有的钱
int N;//需要买的物品数
int arr[S];//存价格
int brr[S];//存重要程度
int dp[30005];//这里不是S,而是自己拥有的钱的最大数,如果开辟成S的话,会运行出错
int main()
{
cin >> M >> N;
for (int i = 1; i <= N; i++)
{
cin >> arr[i] >> brr[i];
}
for (int i = 1; i <= N; i++)//第几个家具
{
for (int j = M; j >= arr[i]; j--)//剩余的钱,钱够就放
{
dp[j] = max(dp[j], dp[j -arr[i]] +arr[i]*brr[i]);
}
}
cout << dp[M];
return 0;
}
0.0分
0 人评分
矩阵转置 (C语言代码)浏览:1565 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:668 |
简单的a+b (C语言代码)浏览:528 |
A+B for Input-Output Practice (IV) (C++代码)浏览:713 |
小明A+B (C语言代码)浏览:1316 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:563 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
校门外的树 (C语言代码)浏览:733 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:895 |
a+b浏览:452 |