题解 | #神奇的口袋#

神奇的口袋

https://www.nowcoder.com/practice/9aaea0b82623466a8b29a9f1a00b5d35

#include <cstdio>
#include <iostream>
using namespace std;

int arr[20];
int dp[40];

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < 40; i++) {
        dp[i] = 0;
    }

    for (int i = 0; i < n; i++) {
        for (int j = 40; j >= arr[i]; j--) {
		  // 动态转移方程 第j个坑位 保存的是 第j个坑位 + 第 [j - nums[i]] 个坑位的和
            dp[j] = dp[j] + dp[j - arr[i]];
        }
        dp[arr[i]]++;
    }
    printf("%d", dp[40]);
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

牛客915519934号:差不多得了 ,真以为我们好忽悠呢?当初就是听了你们的话没有赶上风口入行Java,现在还想再忽悠我呢?这明显就是一个新风口,国家大力发展制造业,以后这个圈子的钱只会越来越多,不管是入门还是大佬,只要进来少说有你一口饭吃,一个个自私自利自己上了车就劝退其他人,钱都让你赚得了呗。就这点东西,入门很容易的,学个pcb,单片机就可以去找工作了,少说一万五起,以后只会越来越高,以后想进阶就去FPGA,linux,给的钱吊打互联网,再说说你们一直说数电模电难?实际呢也不过一个月就能拿下的事情,你不需要学的多深,只需要入门就足够了,就按我说的学出来少说两万起,最好报个培训班,入门更快,兄弟们跟着我冲就完事了,趁着这个机会,狠狠赚他一笔。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务