https://www.acmicpc.net/problem/1890
1. 의사코드
1. dp도 배열한칸씩 탐색하는것이다.
2. pass 조건을 잘 생각하면 된다.
3. dp[i][j]= 어쩌구 가 아닌 // d[next] +=d[cur] 형태로도 짤수가 있다.
2.전체코드
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[104][104],a[104][104]; //오큰수의 갯수 [길이][시작숫자]
int n;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin >> a[i][j];
}
}
dp[0][0] = 1;
for (int i = 0; i <= 100; ++i) {
for (int j = 0; j <= 100; ++j) {
if (a[i][j] == 0) continue;
if (dp[i][j] == 0) continue;
int jump = a[i][j];
if (i + jump <= 100) dp[i + jump][j] += dp[i][j];
if (j + jump <= 100) dp[i][j + jump] += dp[i][j];
}
}
cout << dp[n-1][n-1];
return 0;
}
'Algorithm > dp' 카테고리의 다른 글
백준 11053 LIS c++ // dp, 규칙발견, 일반화 (0) | 2024.04.15 |
---|---|
백준 1520 내리막길 c++ // top-down dp, dfsDp, 상하좌우탐색 문제점 (0) | 2024.04.10 |
백준 10844 쉬운계단수 c++ // dp (0) | 2024.04.08 |
백준 11057 오르막수 c++ // dp (0) | 2024.04.08 |
백준 14501 퇴사 c++ // dfs, dp, 트리하부호출 되는경우만 dfs실행 (0) | 2024.03.20 |