2012-02-29 7 views
-3

ここに問題へのリンクがあります:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=13&page=show_problem&problem=1130uva 10189掃海艇

これは私のコードです。しかし、それは私がそれを提出するたびに間違った答えを与える。なぜ誰が知っていますか?

注:余分な行と列を2つ追加して、最初の列または最後の行の左をチェックしてもエラーは発生しません。代わりにロングコードをデバッグするために他の人に伝えるの

public class Main { 
public void convert(char[][] maze, int fieldNum) { 
    if (fieldNum != 1) 
     System.out.println(); 
    System.out.println("Field #" + fieldNum + ":"); 
    int n = maze.length; 
    int m = maze[0].length; 
    char[][] result = new char[n][]; 
    for (int i = 0; i < n; i++) { 
     result[i] = new char[m]; 
    } 
    for (int i = 0; i < n; i++) { 
     for (int j = 0; j < m; j++) { 
      result[i][j] = '0'; 
     } 
    } 
    for (int i = 1; i < n - 1; i++) { 
     for (int j = 1; j < m - 1; j++) { 
      if (maze[i][j] == '*') { 
      this.fill(result, i, j); 
     } 
     } 
    } 
    for (int i = 1; i < n - 1; i++) { 
     for (int j = 1; j < m - 1; j++) { 
      System.out.print(result[i][j]); 
     } 
     System.out.println(); 
    } 
} 
private void fill(char[][] maze, int i, int j) { 
    if (maze[i-1][j-1] != '*') 
     maze[i-1][j-1] += 1; 
    if (maze[i][j-1] != '*') 
     maze[i][j-1] += 1; 
    if (maze[i+1][j-1] != '*') 
     maze[i+1][j-1] += 1; 
    if (maze[i-1][j] != '*') 
     maze[i-1][j] += 1; 
    maze[i][j] = '*'; 
    if (maze[i+1][j] != '*') 
     maze[i+1][j] += 1; 
    if (maze[i-1][j+1] != '*') 
     maze[i-1][j+1] += 1; 
    if (maze[i][j+1] != '*') 
     maze[i][j+1] += 1; 
    if (maze[i+1][j+1] != '*') 
     maze[i+1][j+1] += 1; 
} 
public static void main(String[] args) throws IOException { 
    Main sweeper = new Main(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    String line = null; 
    int fieldNum = 1; 
    while ((line = reader.readLine()) != null) { 
     String[] xy = line.trim().split("\\s+"); 
     int n = Integer.parseInt(xy[0]); 
     int m = Integer.parseInt(xy[1]); 
     if (n == 0 && m == 0) 
      break; 
     n += 2; 
     m += 2; 
     char[][] maze = new char[n][]; 
     for (int i = 0; i < n; i++) { 
      maze[i] = new char[m]; 
     } 
     for (int i = 1; i < n - 1; i++) { 
      line = reader.readLine(); 
      for (int j = 1; j < n - 1; j++) { 
       maze[i][j] = line.charAt(j - 1); 
      } 
     } 
     sweeper.convert(maze, fieldNum); 
     fieldNum++; 
    } 
} 

}

+3

それはあなたに間違った答えを与える場合、それは完全に動作していません。また、人々はあなたのコードをデバッグするつもりはありません - ここで答えられると思われる特定の質問がありますか? – simchona

+0

私はなぜuvaがREを与えるのか知りませんが、プログラミング上の課題はWAを与えます。 –

+0

REとWAとは何ですか? – simchona

答えて

2

、あなたはUVAの問題のために与えられた入力に対する出力を生成し、あなたのソリューションと比較するthis siteを使用することができます。約1500の問題をサポートしています。

+0

ありがとうございます。おそらく、フォーマットの問題が原因です。私は比較します。 –

0

同じ問題、マインスイーパは、出力にのみフィールド#Nとフィールド#N + 1の間であることを確認し、空行を作り、URL http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110102&format=html

あなたは「プレゼンテーション・エラー」になっている場合にもあります。前または後に空行を入れてはいけません。ここで

はbashで表示されなければならない「サンプル出力」を提供する方法である:

$ java Main <input 
Field #1: 
*100 
2210 
1*10 
1110 

Field #2: 
**100 
33200 
1*100 
$ 

お知らせ単一の空行フィールド#2の前に:ライン。

関連する問題