题解 | #邮票#
邮票
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")
/*
*/
字节跳动公司福利 1294人发布