WuJunBaBa


私信TA

用户名:TopDreamer

访问量:5647

签 名:

人生的每个阶段都需要努力。

等  级
排  名 883
经  验 3414
参赛次数 0
文章发表 13
年  龄 0
在职情况 学生
学  校 AHNU
专  业

  自我简介:

解题思路:0/1背包

注意事项:

参考代码:

#include<iostream>

#include<string.h>

using namespace std;


#define N 30000

#define M 25

int dp[M][N];

int n,m;//n为总钱数,m为希望购买的物品个数 

int value[M];

int w[M];


int Knapsack()

{

for(int i=0;i <= n;i++)dp[0][i]=0;

for(int i=0;i <= m;i++)dp[i][0]=0;

for(int i=1;i <= m;i++)

{

for(int j=1;j <= n;j++)

{

if(j < value[i])

{

dp[i][j]=dp[i-1][j];

else

{

dp[i][j]=max(dp[i-1][j],value[i]*w[i]+dp[i-1][j-value[i]]);

}

}

}

return dp[m][n];

}


int main() 

{

cin>>n>>m;

for(int i=1;i <= m;i++)cin>>value[i]>>w[i];

cout<<Knapsack()<<endl;

return 0;

}  


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区