<< 문제 >>
https://www.acmicpc.net/problem/9184
동적계획 알고리즘에 대해 이해가 있다면 크게 어려운 문제는 아닙니다.
이미 점화식 구성에 대한 힌트를 다 알려주고 있어서 조건만 잘 맞추시면 됩니다.
<< 코드 >>
#include <iostream>
using namespace std;
int wTable[21][21][21];
void fillTable() {
for (int i = 0; i < 21; i++) {
for (int j = 0; j < 21; j++) {
for (int k = 0; k < 21; k++) {
if (i == 0 || j == 0 || k == 0) {
wTable[i][j][k] = 1;
}
else if (i < j && j < k) {
wTable[i][j][k] = wTable[i][j][k - 1] + wTable[i][j - 1][k - 1] - wTable[i][j - 1][k];
}
else {
wTable[i][j][k] = wTable[i - 1][j][k] + wTable[i - 1][j - 1][k] + wTable[i - 1][j][k - 1] - wTable[i - 1][j - 1][k - 1];
}
}
}
}
}
int main() {
fillTable();
while (1) {
int a, b, c;
cin >> a >> b >> c;
if (a == -1 && b == -1 && c == -1) {
break;
}
cout << "w(" << a << ", " << b << ", " << c << ") = ";
if (a <= 0 || b <= 0 || c <= 0) {
a = 0;
b = 0;
c = 0;
}
else if (a > 20 || b > 20 || c > 20) {
a = 20;
b = 20;
c = 20;
}
cout << wTable[a][b][c] << '\n';
}
}
<< 깃헙 >>
< 백준 BaekJoon : 9461번 파도반 수열 > C++ (0) | 2024.01.27 |
---|---|
< 백준 BaekJoon : 1904번 01타일> C++ (0) | 2024.01.27 |
< 백준 BaekJoon : 14889번 스타트와 링크 > C++ (0) | 2024.01.26 |
< 백준 BaekJoon : 14888번 연산자 끼워넣기 > C++ (0) | 2024.01.25 |
< 백준 BaekJoon : 20920번 영단어 암기는 괴로워 > C++ (0) | 2024.01.24 |
댓글 영역