1. 程式人生 > >快樂的跳躍者(相鄰數之差)

快樂的跳躍者(相鄰數之差)

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