BOJ::1890 점프
https://www.acmicpc.net/problem/1890
정답에 long형으로 출력해야 한다.
<JAVA>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int map[][]=new int[101][101]; static long d[][]=new long[101][101]; static int n,cnt=0; public static void main(String args[]) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n=Integer.parseInt(br.readLine()); StringTokenizer st = null; for(int i = 1 ; i <= n ; i++){ st = new StringTokenizer(br.readLine()); for(int j =1 ; j<=n ; j++){ map[i][j]=Integer.parseInt(st.nextToken()); } } d[1][1]=1; int x; for(int i = 1 ; i <= n ; i++){ for(int j =1 ; j<= n ; j++){ if(i==n && j==n){ continue; } if(d[i][j]!=0){ x = map[i][j]; //오른쪽방향 if(i+x <=n){ d[i+x][j]+=d[i][j]; } //아래방향 if(j+x<=n){ d[i][j+x]+=d[i][j]; } } } } System.out.println(d[n][n]); } } | cs |
<C++>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <iostream> using namespace std; int n; int map[101][101]; long d[101][101]; int main() { cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> map[i][j]; } } d[1][1] = 1; int next; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (d[i][j] == 0 || (i == n && j == n)) { continue; } next = map[i][j]; if (next + i <= n) { d[next + i][j] += d[i][j]; } if (next + j <= n) { d[i][next + j] += d[i][j]; } } } cout << d[n][n] << endl; } | cs |
'BOJ::문제풀이' 카테고리의 다른 글
1929 소수 구하기 (0) | 2018.01.01 |
---|---|
1920 수 찾기 (0) | 2018.01.01 |
1874 스택 수열 (0) | 2017.12.31 |
1759 암호 만들기 (0) | 2017.12.31 |
1697 숨바꼭질 (0) | 2017.12.31 |