File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.util.* ;
3+ import java.io.* ;
4+
5+ class Solution
6+ {
7+ public static void main (String [] args ) throws Exception {
8+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
9+ StringTokenizer st = new StringTokenizer (br. readLine());
10+
11+ int N = Integer . parseInt(st. nextToken());
12+ long answer = 0 ;
13+ int [][] board = new int [N ][N ];
14+ long [][][] dp = new long [N ][N ][3 ];
15+ for (int i = 0 ; i < N ; i++ ) {
16+ st = new StringTokenizer (br. readLine());
17+ for (int j = 0 ; j < N ; j++ ) {
18+ board[i][j] = Integer . parseInt(st. nextToken());
19+ }
20+ }
21+ dp[0 ][1 ][0 ] = 1 ;
22+ if (board[1 ][2 ] == 0 && board[0 ][2 ] == 0 && board[1 ][1 ] == 0 ) dp[1 ][2 ][2 ] = 1 ;
23+ for (int i = 2 ; i < N ; i++ ) {
24+ if (board[0 ][i] == 0 ) dp[0 ][i][0 ] = dp[0 ][i- 1 ][0 ];
25+ if (i == 2 ) {
26+ if (board[i][2 ] == 0 ) dp[2 ][2 ][1 ] = dp[1 ][2 ][2 ];
27+ } else {
28+ if (board[i][2 ] == 0 ) dp[i][2 ][1 ] = dp[i- 1 ][2 ][1 ];
29+ }
30+ }
31+
32+ for (int i = 1 ; i < N ; i++ ) {
33+ for (int j = 3 ; j < N ; j++ ) {
34+ if (board[i][j] == 1 ) continue ;
35+ dp[i][j][0 ] = dp[i][j- 1 ][0 ] + dp[i][j- 1 ][2 ];
36+ dp[i][j][1 ] = dp[i- 1 ][j][1 ] + dp[i- 1 ][j][2 ];
37+ if (board[i- 1 ][j] == 0 && board[i][j- 1 ] == 0 )
38+ dp[i][j][2 ] = dp[i- 1 ][j- 1 ][0 ] + dp[i- 1 ][j- 1 ][1 ] + dp[i- 1 ][j- 1 ][2 ];
39+ }
40+ }
41+ for (int i = 0 ; i < 3 ; i++ ) {
42+ answer += dp[N - 1 ][N - 1 ][i];
43+ }
44+ System . out. println(answer);
45+ }
46+ }
47+
48+ ```
You can’t perform that action at this time.
0 commit comments