2017-08-26 55 views
1

Check the complete problem here廚師和彩虹陣列(檢查數組是迴文陣列)

廚師喜歡所有陣列相等。但他比其他人更喜歡一些陣列。特別是他喜歡彩虹陣列。

數組是彩虹如果它具有以下結構:

首先A1元素等於1 接着A2元素等於2. 接着A3元素等於3. 接着A4元素等於4. 接着A5元件等於5. 接着A6元素等於6. 接着A7元素等於7. 接着A6元素等於6. 接着A5元素等於5. 接着A4元素等於4. 接着A3元素等於3. 接着A2元素等於2. 下一步a1元素等於1. ai可以是任何非零的正整數。 數組中沒有其他元素。

幫助廚師找出給定的數組是否是彩虹數組。 這是我的代碼,在NetBeans上完美運行,但在CodeChef上說錯了。

import java.util.Scanner; 
class RAINBOWA { 
public static void main(String args[]) 
{ 
    Scanner sc = new Scanner(System.in); 
    int testCases, noOfElements,i,j,k; 
    boolean t=false; 
    testCases = sc.nextInt(); 
    int a [][] = new int[testCases][1000]; 
    String opString[]; 
    opString = new String[testCases]; 
    for(i=0; i<testCases; i++) 
    { 
     noOfElements = sc.nextInt(); 
     for(j=0; j<noOfElements; j++) 
     { 
      a[i][j] = sc.nextInt(); 
     } 
     for(j=0,k=(noOfElements-1); j<(noOfElements/2); j++,k--) 
     { 
      if(((noOfElements%2)==0) && a[i][j]==a[i][k]) 
      { 
       t=true; 
      } 
      else if((noOfElements%2)!=0 && a[i][j]==a[i][k]) 
      { 
       if(a[i][((int)noOfElements/2)-1]+1==a[i][(int)noOfElements/2]) 
       { 
        t=true; 
       } 
      } 
      else 
      { 
       t=false; 
       break; 
      } 
     } 
     if(t==true) 
     { 
      opString[i]="yes"; 
      t=false; 
     } 
     else 
      opString[i]="no"; 
    } 
    for(i=0; i<testCases; i++) 
    { 
     System.out.println(opString[i]); 
    } 
} 

}

回答

-1

進口java.util.Scanner的;

公共類彩虹{

公共靜態無效主要(字符串S [])

{

int n,flag=0,no; 

Scanner in=new Scanner(System.in); 

System.out.print("Enter number of iterations"); 

no=in.nextInt(); 

for(int z=0;z<no;z++) 

    { 
     System.out.print("Enter the value of n"); 

     n=in.nextInt(); 

     int[] a=new int[n]; 

     System.out.print("Enter the values of array"); 

     for(int i=0;i<n;i++) 
        a[i]=in.nextInt(); 

     if((a[n/2]+1)==a[n/2] || (a[n/2]+1)>a[n/2]) 
     { 

       for(int i=0;i<n/2;i++) 

      { 

       if(a[i]==a[i+1] || a[i+1]==a[i]+1) 

       { 

        int m=n-1; 

        for(int j=0;j<n/2;j++) 

        { 

         if(a[i]==a[(n-1)-i]) 
           flag=1 
         else 
           flag=0; 
        } 
      } 
      else 
       flag=0; 
     } 
    } 
    else 
     flag=0; 
    if(flag==1) 
     System.out.print("rainbow array\n"); 
else 
     System.out.print("not a rainbow array\n"); 

     } 
    } 

}