2016-05-19 8 views
0
import java.util.Scanner; 
class Little_elephant 
{ 
    public static void main(String args[]) 
    { 
     Scanner scan = new Scanner(System.in); 
     int t = scan.nextInt(); 
     int arr[] = new int[100]; 
     int inversions, localInversions; 
     for(int i = 0; i < t; i++) 
     { 
      inversions = 0; 
      localInversions = 0; 
      int n = scan.nextInt(); 
      for(int j = 0; j < n; j++) 
      { 
       arr[j] = scan.nextInt(); 
      } 
      for(int j = 0; j < n - 1; j++) 
      { 
       for(int k = j + 1; j < n; k++) 
       { 
        if(arr[j] > arr[k]) 
        { 
         inversions++; 
        } 
       } 
       if(arr[j] > arr[j+1]) 
        localInversions++; 
      } 
      if(inversions == localInversions) 
       System.out.println("YES"); 
      else 
       System.out.println("No"); 
      } 
     } 
    } 
}  

プログラムはコンパイル時にエラーを表示していませんが、23行目で配列インデックスが範囲外になっています。また、エラーは複数のケース、すなわちt> 1を試したときです。誰か助けてください!配列インデックスが2番目のテストケースの例外

+0

「n」の値は何ですか?理想的には、[mcve]を表示する...これは、問題を示すために必要なものよりも複雑であるように見えますが、それを減らしながら答えを見つけることができます。 –

+0

いくつかの入力と期待される出力を含めるか、プログラムのセマンティクスを記述してください。 – Turing85

+1

MCVEが含まれていないため、この質問はトピックとして閉じられる可能性があります。使用する値を含めるようにしてください。変数名の改善にも取り組むべきです。 –

答えて

1

あなたがkを増加しているが、条件がj

0

にあなたのライン21上のkのループのためにネストされたループfor(int k = j + 1; j < n; k++)
を持っているがkのためではなく、jのための終端句を述べていません。 kがn未満のJ、N未満ではありませんどのように

for(int k = j + 1; k < n; k++) 

は注意してください:それは言ってしなければならない

for(int k = j + 1; j < n; k++) 

:だから今、あなたのループは次のようになります。

関連する問題