main.cc 546 B

12345678910111213141516171819202122232425
  1. #include <cstdio>
  2. #include <cstring>
  3. using namespace std;
  4. const int N = 20, V = 40;
  5. int n, a[N], dp[N + 1][V + 1];
  6. int main() {
  7. scanf("%d", &n);
  8. for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  9. memset(dp, 0, sizeof(dp));
  10. // dp[i][j] = dp[i - 1][j - a[i]] + dp[i - 1][j]
  11. dp[0][0] = 1;
  12. for (int i = 1; i <= n; i++) {
  13. dp[i][0] = 1;
  14. for (int j = 1; j <= V; j++) {
  15. if (a[i - 1] <= j) dp[i][j] = dp[i - 1][j - a[i - 1]] + dp[i - 1][j];
  16. else dp[i][j] = dp[i - 1][j];
  17. }
  18. }
  19. printf("%d\n", dp[n][V]);
  20. return 0;
  21. }