XM30. 小米大礼包
描述
小米之家是成人糖果店。里面有很多便宜,好用,好玩的产品。中秋节快到了,小米之家想给米粉们准备一些固定金额大礼包。对于给定的一个金额,需要判断能不能用不同种产品(一种产品在礼包最多出现一次)组合出来这个金额。聪明的你来帮帮米家的小伙伴吧。输入描述
输入 N (N 是正整数, N <= 200)输出描述
能组合出来输出 1示例1
输入:
6 99 199 1999 10000 39 1499 10238
输出:
1
C++ 解法, 执行用时: 3ms, 内存消耗: 504KB, 提交时间: 2020-07-28
#include <bits/stdc++.h> using namespace std; int p[205]; bitset<100001> dp(0); int main() { int n, m; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", p + i); scanf("%d", &m); dp[0] = 1; for (int i = 0; i < n; i++) dp |= dp << p[i]; cout << dp[m] << endl; return 0; }
C++ 解法, 执行用时: 4ms, 内存消耗: 480KB, 提交时间: 2020-08-18
#include <bits/stdc++.h> using namespace std; int p[205]; bitset<100001> dp(0); int main() { int n, m; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", p + i); scanf("%d", &m); dp[0] = 1; for (int i = 0; i < n; i++) dp |= dp << p[i]; cout << dp[m] << endl; return 0; }