Shass


私信TA

用户名:dotcpp0789983

访问量:14

签 名:

等  级
排  名 34061
经  验 451
参赛次数 0
文章发表 1
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
背包算法各平台都有介绍,先去了解算法思路,自己举一组数据,正序把所有值列出来就明白了。
以下代码是采用的倒序遍历,相比较正序遍历,可以省去部分时间。

参考代码:

#include <stdio.h>
#include <string.h>

int main() {
    int T, M;
    scanf("%d %d", &T, &M);

    int times[M], values[M];

    for (int i = 0; i < M; i++)
        scanf("%d %d", &times[i], &values[i]);

    int dp[T+1];
    memset(dp, 0, sizeof(dp));

    for (int i = 0; i < M; i++) 
        for (int j = T; j >= times[i]; j--) 
            dp[j] = dp[j] > (dp[j - times[i]] + values[i]) ? dp[j] : (dp[j - times[i]] + values[i]);

    printf("%d\n", dp[T]);
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »