开心的金明

昨天晚上博客维护,今天补上。

在上课,偷偷写的,网速也不够快,打开博客,都费老劲了。就不贴连接了,在sdnuoj和codevs上都能找到题,搜标题“开心的金明”。

这一天不能动态规划的时候不能从前面往后面遍历,加入总钱数1000,某一件物品的价格是400时,从400 开始遍历,当遍历到800多的时候 比较 n-400这样的话就计算了两遍,明显的不对,因此应该从后往前遍历。

#include
#include
#include
#include
#include
using namespace std;
int main()
{
int n, m;
int money[30] = { 0 };
int value[30] = { 0 };
int f[30050] = { 0 };
cin >> n >> m;
for (int i = 1; i < m+1; i++)
{
cin >> money[i] >> value[i];
}
for (int i = 1; i < m+1; i++)
{
for (int j = money[i]; j < n + 1;j++)
f[j] = max(f[j],f[j-money[i]]+money[i]*value[i]);
cout << f[mo]


}
cout << f[n] << endl;
system("pause");
return 0;
}

你可能感兴趣的:(开心的金明)