Вопрос:

Chef и Rainbow Array (проверка массива на палиндромный массив)

java arrays palindrome

563 просмотра

4 ответа

52 Репутация автора

Проверьте полную проблему здесь

Шеф-повар любит все массивы одинаково. Но он любит некоторые массивы более одинаково, чем другие. В частности, он любит Rainbow Arrays.

Массив является Rainbow, если он имеет следующую структуру:

Первые элементы a1 равны 1. Следующие элементы a2 равны 2. Следующие элементы a3 равны 3. Следующие элементы a4 равны 4. Следующие элементы a5 равны 5. Следующие элементы a6 равны 7. Следующие элементы 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]);
    }
}

}

Автор: Muktadir Khan Источник Размещён: 26.08.2017 05:43

Ответы (4)


-1 плюса

11 Репутация автора

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");
        }
    }
}
Автор: Arshad shaik Размещён: 20.11.2017 07:54

-1 плюса

1 Репутация автора

codechef-chef-and-rainbow-array-problem 100% решение проблемы с ++

   #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;}
Автор: Suraj Kumar Singh Размещён: 21.06.2018 09:56

0 плюса

1 Репутация автора

100% решение для Java (код проблемы шеф-повара и радуги: 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);
       }
    }
 };
Автор: Suraj Kumar Singh Размещён: 21.06.2018 11:08

0 плюса

11 Репутация автора

Я надеюсь, что следующее решение является самым чистым

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";
    }
Автор: bhosleviraj Размещён: 11.08.2019 08:25
Вопросы из категории :
32x32