【问题标题】:Chef and Rainbow Array(Checking an array to be a palindrome array)Chef 和 Rainbow Array(检查数组是否为回文数组)
【发布时间】:2017-08-26 17:43:31
【问题描述】:

Check the complete problem here

Chef 对所有的阵列都一视同仁。但他比其他的更喜欢一些阵列。他特别喜欢彩虹阵列。

如果数组具有以下结构,则该数组是 Rainbow:

前 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 可以是任何非零正整数。 数组中没有其他元素。

帮助 Chef 找出给定的数组是否是 Rainbow Array。 这是我的代码,在 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]);
    }
}

}

【问题讨论】:

    标签: java arrays palindrome


    【解决方案1】:

    java 100% 解决方案 (Chef and Rainbow Array Problem Code: RAINBOWA)

     import java.util.*;
     class Rainbowa
     {
       public static String rainbowa(int[] s)
       {
           int i,j,n=s.length;
           if(s[0]!=1)
             return "no";
    
           for(i=0,j=n-1;i<j;i++,j--)
              if((s[i]!=s[j]) || (s[i+1]-s[i]>1 )|| ( s[i+1]-s[i]<0 ) || (s[i]<1 )|| (s[i] > 7))
                   break;
    
              if(i<j || s[i]!=7)
                 return "no";
           return "yes";
        }
    
        public static void main(String args[])
        {
           Scanner sc=new Scanner(System.in);
           int t;
           t=sc.nextInt();
           for(int i=0;i<t;i++)
           {
              int n,val;
              n=sc.nextInt();
              int[] Arr=new int[n];
              for(int j=0;j<n;j++)
              {
                  Arr[j]=sc.nextInt();
              }
               String str = rainbowa(Arr);
               System.out.println(str);
           }
        }
     };
    

    【讨论】:

      【解决方案2】:

      我希望以下解决方案是最干净的

      public static String isRainbowArray(int[] arr) {
              if(arr == null || arr.length == 0) return "no";
      
              int currentNumber = 1;
              int mid = arr.length/2;
              int left = 0;
              int right;
      
              while (left <= mid) {
                  right = arr.length - 1 - left;
                  if(arr[left] == currentNumber && arr[right] == currentNumber) {
                      left++;
                      continue;
                  }
      
                  currentNumber++;
                  if(arr[left] != currentNumber || arr[right] != currentNumber) {
                      return "no";
                  }
              }
      
              return currentNumber == 7 ? "yes": "no";
          }
      

      【讨论】:

        【解决方案3】:

        codechef-chef-and-rainbow-array-problem 100% 解决的 c++ 解决方案

           #include<bits/stdc+++.h>
           using namespace std;
           string rainbowa(vector<int> s)
           {
             if(s[0]!=1)
                 return "no";
             int i,j,n=s.size();
             for(i=0,j=n-1;i<j;i++,j--)
                 if(((s[i]!=s[j]) || s[i+1]-s[i]>1 || s[i+1]-s[i]<0  || s[i]<1 || s[i] > 7))
                    break;;
        
             if(i<j || s[i]!=7)
               return "no";
            return "yes";
           }
        
        int main()
        {
          ios_base::sync_with_stdio(false);
          cin.tie(NULL);
          int q;
          cin >> q;
          while(q--)
          {
            int n;
            cin>>n;
            vector<int> arr;
            for (int q_itr = 0; q_itr < n; q_itr++)
            {
                int s;
                cin>>s;
                arr.push_back(s);
            }
            string s = rainbowa(arr);
            cout<<s<<endl;
         }
          return 0;}
        

        【讨论】:

        【解决方案4】:
        import java.util.Scanner; 
        public class rainbow {
            public static void main(String 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");
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-24
          • 2021-11-10
          • 1970-01-01
          • 2019-09-05
          • 1970-01-01
          • 2017-09-13
          相关资源
          最近更新 更多