Algorithm/dp
백준 1890 점프 c++ // dp, 배열순회dp, dp[next] += dp[cur]
Mini_96
2024. 4. 8. 19:25
https://www.acmicpc.net/problem/1890
1890번: 점프
첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장
www.acmicpc.net
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;
}