Java 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可以是任何非零正整数。 数组中没有其他元素 帮助厨师确定给定数组是否为彩虹数组。 这是我的代码,在NetBeans上运行得很好,但在CodeChef上回答错误Java Chef和Rainbow数组(检查数组是否为回文数组),java,arrays,palindrome,Java,Arrays,Palindrome,厨师对所有阵列都一视同仁。但他喜欢某些数组比其他数组更平等。他特别喜欢彩虹阵列 如果阵列具有以下结构,则称为彩虹: 第一个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可以是任何非零正整数。 数组中没有其他元素 帮助厨师确定给定数组是否
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]);
}
}
import java.util.Scanner;
彩虹A级{
公共静态void main(字符串参数[])
{
扫描仪sc=新的扫描仪(System.in);
int测试用例,noOfElements,i,j,k;
布尔t=false;
testCases=sc.nextInt();
inta[][]=newint[testCases][1000];
字符串opString[];
opString=新字符串[testCases];
对于(i=0;iimport java.util.Scanner;
公共级彩虹{
公共静态void main(字符串s[]{
int n,标志=0,否;
扫描仪输入=新扫描仪(系统输入);
系统输出打印(“输入迭代次数”);
否=in.nextInt();
对于(intz=0;zcodechef厨师和彩虹数组问题
100%解决C++解决方案< /P>
#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;}
#包括
使用名称空间std;
弦彩虹A(矢量s)
{
如果(s[0]!=1)
返回“否”;
int i,j,n=s.size();
对于(i=0,j=n-1;i1 | | s[i+1]-s[i]q;
而(q--)
{
int n;
cin>>n;
向量arr;
对于(int q_itr=0;q_itr>s;
arr.推回;
}
字符串s=彩虹A(arr);
coutjava 100%解决方案(厨师和彩虹数组问题代码:RAINBOWA)
import java.util.*;
彩虹A级
{
公共静态字符串彩虹(int[]s)
{
int i,j,n=s.长度;
如果(s[0]!=1)
返回“否”;
对于(i=0,j=n-1;i1)| |(s[i+1]-s[i]我希望下面的解决方案是最干净的
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";
}
公共静态字符串isRainbowArray(int[]arr){
如果(arr==null | | arr.length==0)返回“否”;
int currentNumber=1;
int mid=arr.length/2;
int左=0;
国际权利;
虽然(左)我认为OP想要一个Java解决方案Java解决方案也张贴在这页下面。。。
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);
}
}
};
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";
}