2016-09-26 4 views
1

Googleの招待コードチャレンジを受け取りました。私はあなたが最大で1つの壁を取り除くことを許可されている間に迷路のminimunのパスを見つけるような問題がある。私は自分のコードを提出し、400 bad requestしか得ていません。私はそれが私のコードの問題であるかどうかわからないので、これについて少し混乱しています。以下は私のコードですが、時間のかかる複雑さが懸念されることがあります。dfsソリューションでgoogle foobarチャレンジエラーが発生しました

public class Answer { 
    public static int answer(int[][] maze) { 

     // Your code goes here. 
     boolean[][] visited = new boolean[maze.length][maze[0].length]; 


     return dfs(0, 0, true, visited, maze, 1); 

    } 
    private static int dfs(int x, int y, boolean allowRemove, boolean[][] visited, int[][] maze, int len){ 
     if(x == maze.length - 1 && y == maze[0].length - 1){ 

      return len; 
     } 

     int[] dx = {0, 0, -1, 1}; 
     int[] dy = {-1, 1, 0, 0}; 
     visited[x][y] = true; 
     int min = Integer.MAX_VALUE; 
     for(int i = 0; i < 4; i++){ 
      int nx = dx[i] + x; 
      int ny = dy[i] + y; 
      if(nx < 0 || ny < 0 || nx >= maze.length || ny >= maze[0].length || visited[nx][ny]){ 
       continue; 
      } 
      if(maze[nx][ny] == 0){ 
       min = Math.min(dfs(nx, ny, allowRemove, visited, maze, len + 1), min); 

      }else if(allowRemove){ 
       min = Math.min(dfs(nx, ny, false, visited, maze, len + 1),min); 

      } 
      if(min == maze.length + maze[0].length - 1){ 
       break; 
      } 
     } 
     visited[x][y] = false; 
     return min; 
    } 
} 
+0

あなたがこの問題を解決するためにどのような方法を見つけました。私は期限切れになっています。最適化の提案があれば歓迎します。 – rizzz86

答えて

0

お願いしますが、どうやって招待を受けましたか?

誰もが気づいたときに(不可能なゲームが出てきたとき)、時間内にすべての課題を解決しなかったので、招待状が期限切れになりました。

そして、スタックオーバーフロー上の誰かが実際には同じ問題になったことを考え出した場合、althoは知らない:Google foobar responds with Error(400)

関連する問題