본문 바로가기

BOJ 1010번 : 다리 놓기 본문

BOJ

BOJ 1010번 : 다리 놓기

00rigin 2020. 4. 12. 17:06

손풀기 문제로 풀었다.

기본적인 dp문제였고, 경우의 수를 물어보았으니, dp안에 들어가는 원소는 경우의 수가 될것 이라고 예상하고 풀면 되는 문제였다.

또한, 표를 한번 그려보면 어렵지 않게 규칙을 찾을 수 있다.

 

<Solution>

N과 M에 대해 표를 그려보면 아래와 같다.

위와 위의 왼쪽 원소의 합이 자신의 값이 되는것을 알 수 있다. 즉, 아래의 점화식 표현이 가능하다.

 

dp[m][n] = dp[m-1][n-1] + dp[m-1][n]

 

<소스코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
 
void Solve() {
    int t, n, m;
    cin >> t;
    for (int x = 0; x < t; x++) {
        int dp[31][31= { 0, };
        cin >> n >> m;
        for (int i = 1; i <= m; i++) {
            dp[i][1= i; //초기값
            for (int j = 2; j <= n; j++
                dp[i][j] = dp[i - 1][j - 1+ dp[i - 1][j];
        }
        cout << dp[m][n] << endl;
    }
}
 
int main() {
    Solve();
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

<문제>

https://www.acmicpc.net/problem/1010

 

1010번: 다리 놓기

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

www.acmicpc.net

 

'BOJ' 카테고리의 다른 글

BOJ 2606번 : 바이러스  (0) 2020.04.14
BOJ 1260번 : DFS와 BFS  (0) 2020.04.13
BOJ 1670번 : 정상 회담 2  (0) 2020.04.12
BOJ 15954번 : 인형들  (1) 2020.04.11
BOJ 1011번 : Fly me to the Alpha Centauri  (0) 2020.04.10
Comments