BOJ 1010 다리 놓기

Link

바보같이 dp배열 초기화 안시켜줘서 제출을 8번이나 했네요.

서쪽에 게이트가 1개일 경우,
dp[1][m] = m

게이트가 각 n, m일 때,
dp[n][m] = dp[n-1][m-1] + dp[n-1][m-2] + dp[n-1][m-3] + … + dp[n-1][1]

코드 (C++)

#include <iostream>
#include <cstring>

using namespace std;

int dp[40][40];

int main(int argc, const char *argv[]) {
cin.tie(nullptr);
ios::sync_with_stdio(false);

int T, N, M;
cin >> T;

for (int i = 0; i < T; i++) {
cin >> N >> M;

memset(dp, 0, sizeof(dp));

for (int m = 1; m <= M; m++) {
dp[1][m] = m;
}

for (int n = 2; n <= N; n++) {
for (int m = 1; m <= M; m++) {
for (int k = n - 1; k < m; k++) {
dp[n][m] += dp[n - 1][k];
}
}
}

cout << dp[N][M] << endl;
}

return 0;
}
Total views

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×