快乐的跳跃者(相邻数之差)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/printf88/article/details/84924172

如果有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;
}

猜你喜欢

转载自blog.csdn.net/printf88/article/details/84924172