https://www.acmicpc.net/problem/5557
더보기
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> arr;
unsigned long long prevv[101][21];
arr.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
for (int j = 0; j <= 20; j++) {
prevv[1][j] = 0;
}
prevv[1][arr[1]] = 1;
for (int i = 2; i < n; i++) {
for (int j = 0; j <= 20; j++) {
prevv[i][j] = 0;
}
for (int j = 0; j <= 20; j++) {
if (prevv[i - 1][j] > 0) {
if (j >= arr[i]) {
prevv[i][j - arr[i]] += prevv[i - 1][j];
}
if (j + arr[i] <= 20) {
prevv[i][j + arr[i]] += prevv[i - 1][j];
}
}
}
}
cout << prevv[n - 1][arr[n]] << endl;
return 0;
}
'Algorithm > Algorithm 문제 풀이' 카테고리의 다른 글
[BAE/<JOON> 문제풀이] 9507.Generations of Tribbles (DP.049) (0) | 2020.05.24 |
---|---|
[BAE/<JOON> 문제풀이] 10164. 격자상 경로 (DP.048) (0) | 2020.05.23 |
[BAE/<JOON> 문제풀이] 11049. 행렬 곱셈 순서 (DP.046) (0) | 2020.05.20 |
[BAE/<JOON> 문제풀이] 10942. 팰린드롬? (DP.045) (0) | 2020.05.19 |
[BAE/<JOON> 문제풀이] 2096. 내려가기 (DP.044) (2) | 2020.05.18 |