优美的数列
【试题描述】
小明同学最近喜欢上研究数列,他认为优美的数列应该长成下面这样子
A1<A2 <A3....Ak-1<AkAk+1....An-1>An譬如:125631是一个优美的数列;
123231不是一个优美的数列:
并且规定两端的也不可以为最大才是优美的数列,现在给你一个N个数列,判断这些
数列是不是优美的数列,如果是输出yes,否则输出no;
【输入格式】
第一行输入一个数N,表示有N个数列;
接下来有N行,每行若干个用空格隔开的正整数,每行以0结尾:
【输出格式】
输出包含N行,每行一个yes或者no1
【样例输入】
4
123210
1222210
543210
153210
【样例输出】
yes
no
no
yes
【数据范围】
对于20%的数:1<=N<=3,每行不包括行末的0为3个数,如:1310:
对于100%的数:1<=N<=10,每行不超过100个数,每个数小于等于10000:
#include <iostream>
#include <vector>
using namespace std;
bool check(const vector<int> &nums)
{
if (nums.size() < 3)
return false;
if (nums[0] >= nums[1])
return false;
size_t n = nums.size();
size_t i = 1;
while (i < n - 1 && nums[i] < nums[i + 1])
i++;
if (i == n - 1)
return false;
while (i < n - 1 && nums[i] > nums[i + 1])
i++;
return i == n - 1;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
vector<int> nums;
int a;
while (cin >> a)
{
if (a == 0)
break;
nums.push_back(a);
}
if (check(nums))
cout << "yes\n";
else
cout << "no\n";
}
return 0;
}