728x90
https://www.acmicpc.net/problem/1890
1890๋ฒ: ์ ํ
์ฒซ์งธ ์ค์ ๊ฒ์ ํ์ ํฌ๊ธฐ N (4 ≤ N ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ N๊ฐ ์ค์๋ ๊ฐ ์นธ์ ์ ํ์ ธ ์๋ ์๊ฐ N๊ฐ์ฉ ์ฃผ์ด์ง๋ค. ์นธ์ ์ ํ์๋ ์๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 9๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ฉฐ, ๊ฐ์ฅ
www.acmicpc.net
์ฒ์์๋ ๋ฐฉ๋ฌธํ๋ ์ ์ ํ์๋ค๊ฐ ๋ฃ์ด๊ฐ๋ฉด์ ๋จ์ ํ์์ ํ์๋๋ฐ ์๊พธ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋ค
์ฐพ์๋ณด๋๊น ๋จ์ํ์, dfs, bfs๋ก ํ๋ฉด ์๊ฐ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋ ๋ฌธ์ ์๋ค
๊ทธ๋์ dp๋ก ํ์์!!
#include <iostream>
using namespace std;
int n;
int arr[101][101];
long dp[101][101]; //๊ฒฝ๋ก์ ๊ฐ์๋ ์ต๋ 2^63 - 1 ๊น์ง๋ค. (int๋ฒ์ ์ด๊ณผ)
int main(){
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>arr[i][j];
}
}
if(n==1 || arr[0][0]==0) { //n์ด 1์ด๊ฑฐ๋ ์ฒซ์นธ์์ ์ ํ๋ฅผ ํ ์ ์์ผ๋ฉด ์ ๋ต์ 0
cout<<"0"; return 0;}
dp[0][0]=1;
int path=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int jump = arr[i][j];
if(i==n-1 && j==n-1) continue;
if(i+jump<n) dp[i+jump][j] += dp[i][j];
if(j+jump<n) dp[i][j+jump] += dp[i][j];
}
}
cout<<dp[n-1][n-1];
return 0;
}
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฝํ ] ๊ฐ๋ฏธ ์ ์ฌ (0) | 2023.02.25 |
---|---|
[๋ฐฑ์ค]1520๋ฒ: ๋ด๋ฆฌ๋ง ๊ธธ (0) | 2023.02.17 |
[๋ฐฑ์ค]11048๋ฒ: ์ด๋ํ๊ธฐ (0) | 2023.02.12 |
[๋ฐฑ์ค]10844๋ฒ: ์ฌ์ด ๊ณ๋จ์ (0) | 2023.02.11 |
[๋ฐฑ์ค] 11057๋ฒ : ์ค๋ฅด๋ง ์ (0) | 2023.02.10 |