【问题描述】
对于一个具有 n 个元素的整型数组 a , 若对于1≤ i <n-1
当ai >ai-1时,必有ai>ai+1, 反之亦然;
当ai<ai-1时,必有ai<ai+1, 反之亦然;
ai-1 ≠ ai, ai ≠ ai+1。
则称数组 a 为波形数组, 例如数组 1 2 -5 9 4 5为波形数组,而3 5 5 4不是波形数组。
【输入形式】
输入的第一行为一个正整数T,表示测试用例的组数。
接下来的T组数,每组的第一行为一个正整数 n ( n ≥ 3) ,表示数组的大小,接下来一行为 n 个整数。
【输出形式】
输出有T行,每行对应每个测试用例的结果,如果为波形数组,则输出"Yes",否则输出"No"。
【样例输入】
2 6 1 2 -5 9 4 5 4 3 5 5 4
【样例输出】
Yes No
#include <iostream>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int num[n];
for (int i=0;i<n;i++){
cin>>num[i];
}
int flag=0;
for (int i=1;i<n-1;i++){
if ((num[i]-num[i-1])*(num[i+1]-num[i])>=0){ //两边都夹中间,乘积永远是小于0的
flag++; //如果大于等于0,就不是波形了
}
}
if (flag>0){
cout<<"No"<<endl;
}
else{
cout<<"Yes"<<endl;
}
}
return 0;
}