2017-08-26 122 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"); 

     } 
    } 

}