본문 바로가기
백준 알고리즘/다이나믹 프로그래밍

백준 1010번 C++

by paysmile 2019. 1. 15.

#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