题目
错误示范:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
int num[10];
while (n--){
int left[10] = {0}, right[10] = {0}, cnt_left = -1, cnt_right = -1;
bool flag = false;
for (int i = 0; i < 10; i++){//当输入数据有多组时
cin >> num[i]; //数据还没有输入完就进行判断,当第一组数据在输入完前就已经判断结束后,
if (cnt_left == -1){//键盘缓冲内的剩余数据将会在下一组数据中读入
left[++cnt_left] = num[i];
continue;
}
if (num[i] > left[cnt_left]){
left[++cnt_left] = num[i];
}
else if (num[i] > right[cnt_right] || cnt_right == -1){
right[++cnt_right] = num[i];
}
else {
cout << "NO" << endl;
flag = true;
break;
}
}
if (!flag)
cout << "YES" << endl;
}
return 0;
}
正确写法
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
int num[10];
while (n--){
int left[10] = {0}, right[10] = {0}, cnt_left = 0, cnt_right = -1;
bool flag = false;
for (int i = 0; i < 10; i++)
cin >> num[i];//先将数据全部读入
left[0] = num[0];
for (int i = 1; i < 10; i++){
if (num[i] > left[cnt_left]){
left[++cnt_left] = num[i];
}
else if (num[i] > right[cnt_right] || cnt_right == -1){
right[++cnt_right] = num[i];
}
else {
cout << "NO" << endl;
flag = true;
break;
}
}
if (!flag)
cout << "YES" << endl;
}
return 0;
}