题解 | #邮票#

邮票

https://www.nowcoder.com/practice/b6735b1bd4ff488fb9a9032457410f66

/*
看了评论区,都不行,这才是动态规划解题
*/
#include <iostream>
#include <vector>
using namespace std;

int stamp[] = {8,8,8,8,8, 10,10,10,10, 18,18,18,18,18,18};

int main() {
    vector<int> dp(189, 0);
    dp[0] = 1;
    for (int i = 0; i < sizeof(stamp) / sizeof(int); i++) {
        for (int j = 188; j >= stamp[i]; j--) {
            if (dp[j - stamp[i]] != 0) {
                dp[j]++;
            }
        }
    }
    int sum = 0;
    for (int i  = 1; i < dp.size(); i++) {
        if (dp[i] != 0) sum++;
    }
    cout << sum << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")
/*

*/

全部评论

相关推荐

陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务