์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
2 ์ด | 128 MB | 47.942% |
๋ฐฉ๋ฒ
'dp[i][j]๋ ์์ชฝ์ i ๊ฐ์ ์ ์ด ์๊ณ , ๋์ชฝ์ j ๊ฐ์ ์ ์ด ์๋ค๊ณ ํ์ ๋ ๋์ ์ ์๋ ๋ค๋ฆฌ์ ์' ๋ผ๊ณ ์ ์๋ฅผ ํด๋ณด์๋ค.๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ดค๋๋ฐ, ๊ฐ์ i๊ฐ์ ์ ์ผ ๋๋ j๊ฐ์ ๋ฐ๋ผ ๊ฐ์ ๋ชจ์ต์ ๋ค๋ฆฌ๋ค์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ณผ ์ ์์๊ณ
์ผ์ชฝ ์๋จ์ ๋ณด์ด๋ฏ์ด ํ๋ฅผ ์ฑ์๋ณด๋ ์๋์ ๊ฐ์ ๊ท์น์ ์ฐพ์๋ผ ์ ์์๋ค.
๊ทธ๋์ ์์ ์ธ์๋ณด๋ฉด ์ด๋ ๊ฒ ๋๋ค.
- i == 1
dp[i][j] = j; - i > 1
dp[i][j] = dp[i][j-1] + dp[i-1][j-1]
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
1124 KB | 0 ms |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
int t, n, m, dp[55][35];
int main(){
for (int i = 1; i < 30; i++)
dp[1][i] = i;
for (int i = 2; i < 30; i++) {
for (int j = i; j < 30; j++) {
if (i == j)dp[i][j] = 1;
else {
dp[i][j] = dp[i][j - 1] + dp[i - 1][j - 1];
}
}
}
scanf("%d", &t);
while (t--) {
scanf("%d %d", &n, &m);
printf("%d\n", dp[n][m]);
}
return 0;
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #2169 ๋ก๋ด ์กฐ์ข ํ๊ธฐ (0) | 2019.10.02 |
---|---|
[BOJ] #1149 RGB ๊ฑฐ๋ฆฌ (0) | 2019.10.02 |
[BOJ] #14891 ํฑ๋๋ฐํด (0) | 2019.10.02 |
[BOJ] #14889 ์คํํธ์ ๋งํฌ (0) | 2019.10.02 |
[BOJ] #3190 ๋ฑ (0) | 2019.09.29 |
๋๊ธ