如果有n个数, 这n个数中相邻数之间的差的绝对值能够取遍[1,n-1]之间所有的整数.那么就输出OK否则输出NO;
例如:1 4 2 3 就是是'OK' ,因为相邻数之差的绝对值分别为3、2、1。
输入
有T组测试数据。输入的第一行是数据组数T,其后每一行是一组测试数据。每行包含一个整数n(n≤300),然后是n个整数,表示一个输入序列
输出
对于输入的每一行,输出一行 OK' 或者 NO' ;
代码如下:
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int NUM;
int n;
int num1,num2;
int ab;
int flag=0;
int *a;
int i,j;
scanf("%d",&NUM);
for(j=0;j<NUM;j++) {
flag=0;
scanf("%d",&n);
a=new int[n]();
scanf("%d",&num1);
for(i=1;i<n;i++){
scanf("%d",&num2);
ab=abs(num2-num1);
if(ab<n){
if(ab>=1){
if(a[ab]==0){
a[ab]=1;
flag++;
}
}
}
num1=num2;
}
if(flag==n-1){
cout<<"OK"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}