2016-09-12 3 views
-8

ここでは8人の女王問題のコードです。私は多くのテストケースでそれをチェックし、それは正しいです。しかし、私はそれをhttps://open.kattis.com/に提出したとき、私のコードが間違った答えであることに気付きました。では、私のコードはどこで失敗するのですか?助けてください!8人の女王のjava

public class Chesss { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) throws IOException { 
    // TODO code application logic here 
    int[] row = new int[8]; 
    int[] column = new int[8]; 
    int[] lcros= new int[15]; 
    int[] rcros = new int[15]; 
    for(int i=0;i<8;i++){ 
     row[i] = 0; 
     column[i] = 0; 
    } 
    for(int i=0;i<15;i++){ 
     lcros[i] = 0; 
     rcros[i] = 0; 
    } 
    boolean check = true; 
    for(int i=0;i<8;i++){ 
     for(int j=0;j<8;j++){ 
      char in = (char)System.in.read(); 
      if(in=='\n'){ 
       in = (char)System.in.read(); 
      } 
      if(in=='*'){ 
       if(row[i]==1){ 
        check = false; 
       } 
       else{ 
        row[i] =1; 
       } 
       if(column[j]==1){ 
        check = false; 
       } 
       else{ 
        column[j] =1; 
       } 
       if(lcros[i+j]==1){ 
        check = false; 
       } 
       else{ 
        lcros[i+j] =1; 
       } 
       if(rcros[i-j+7]==1){ 
        check = false; 
       } 
       else{ 
        rcros[i-j+7] =1; 
       } 
      } 
     } 
    } 
    if(check==true){ 
     System.out.print("valid"); 
    } 
    else 
     System.out.print("invalid"); 
} 

}

+5

あなたは私たちがために意味のある名前を与えることによって、あなたを助ける助けることができますa、b、c、dの代わりにあなたの変数...?あなたが知っている、それはあなたがエラーを参照するのを助けるかもしれません... –

+2

とあなたが得ている入力は何ですか?なぜあなたは8人の女王の問題を解決するために何か入力が必要ですか? –

+0

@sharonbnプログラムはソリューションを受け取り、それを検証します。 –

答えて

1

今、私たちはあなたのコードが「8つのクイーン問題の解決策を検証する」ことを意図していることを知っていることを、あなたのコードにはいくつかの問題があります。ここで明白な最も明白な2つです:

あなたが の位置を取得する必要があります
  1. ALL 8人の王妃前に、あなたはからすべての方向にあるすべての直線をチェックする必要があり、検証プロセス
  2. を開始します

は、私はあなたのコード内でこのすべてを参照してくださいいけないチェスボードの端で停止女王のポジションは、

+0

は、溶液をもう一度見を持って、そのアイデアは、「ブロック」と、それは新しい女王の位置を取得したときに、それは位置が「ブロック」されていないことを確認してから更新して列、行、左または右の対角線を反復的にマークすることです"ブロックされた"フィールド。 –

+0

私が参照してください。明確化のおかげで –