12345678910111213141516171819202122232425 |
- #include <cstdio>
- #include <cstring>
- using namespace std;
- const int N = 20, V = 40;
- int n, a[N], dp[N + 1][V + 1];
- int main() {
- scanf("%d", &n);
- for (int i = 0; i < n; i++) scanf("%d", &a[i]);
- memset(dp, 0, sizeof(dp));
- // dp[i][j] = dp[i - 1][j - a[i]] + dp[i - 1][j]
- dp[0][0] = 1;
- for (int i = 1; i <= n; i++) {
- dp[i][0] = 1;
- for (int j = 1; j <= V; j++) {
- if (a[i - 1] <= j) dp[i][j] = dp[i - 1][j - a[i - 1]] + dp[i - 1][j];
- else dp[i][j] = dp[i - 1][j];
- }
- }
- printf("%d\n", dp[n][V]);
- return 0;
- }
|