海洋之心


私信TA

用户名:wanggongsheng

访问量:122715

签 名:

等  级
排  名 17
经  验 20534
参赛次数 3
文章发表 163
年  龄 26
在职情况 学生
学  校
专  业 计算机技术

  自我简介:

读研ing,平时不登录dotcpp

动态规划:背包问题
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[26][30000];
int main(void)
{
    int money , n  , i  , j , val[26] , im[26] ;
    cin >> money >> n ;
    for(i=1;i<=n;i++)
    cin >> val[i]  >> im[i] ;
    memset(dp,0,sizeof(dp));
    for(i=1;i<=n;i++)
    {
        for(j=0;j<=money ; j++ )
        {
            if( j >= val[i] ) dp[i][j]=max(dp[i-1][j] , dp[i-1][j-val[i]]+ im[i]*val[i] );
            else  dp[i][j] = dp[i-1][j];
        }
    }
    cout << dp[n][money];
    return 0;
}
 

0.0分

2 人评分

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

编程语言转换

万能编程问答

代码解释器

  评论区

大佬 怎么判断dp数组开的大小
2019-07-26 12:55:19
int dp[26][30000];
这个为什么放在main函数里就不行了啊。。
2019-04-26 15:13:38
  • «
  • 1
  • »