#include<iostream>
#include<cstring>
using namespace std;
int m;
int site[31][31];
int cal(int w, int e) {
if (site[w][e] != 0)
return site[w][e];
int a = w - 1;
int b = e;
while (a < b) {
b--;
site[w][e] += cal(a, b);
}
return site[w][e];
}
int main() {
cin >> m;
memset(site, 0, sizeof(site));
for (int i = 1; i <= 31; i++) {
site[1][i] = i;
}
for (int i = 0; i < m; i++) {
int west, east;
cin >> west >> east;
cout << cal(west, east)<< endl;
}
return 0;
}
또는
#include<iostream>
#include<cstring>
using namespace std;
int m;
int site[31][31];
void cal() {
for (int i = 2; i <= 30 ; i++) {
for (int j = i; j <= 30; j++) {
for (int k = j - 1; k >= i - 1; k--) {
site[i][j] += site[i - 1][k];
}
}
}
}
int main() {
cin >> m;
memset(site, 0, sizeof(site));
for (int i = 1; i < 31; i++) {
site[1][i] = i;
}
cal();
for (int i = 0; i < m; i++) {
int w, e;
cin >> w >> e;
cout << site[w][e]<< endl;
}
}
'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준 9461번 C++ (0) | 2019.01.17 |
---|---|
백준 9465번 C++ (0) | 2019.01.17 |
백준 2156번 C++ (0) | 2019.01.15 |
백준 11726번 C++ (0) | 2019.01.15 |
백준 2193번 C++ (0) | 2019.01.14 |