练习10,第12题,有序序列判断
题目如下:
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围:
3≤𝑛≤50,3≤n≤50 序列中的值都满足
1≤𝑣𝑎𝑙≤100,1≤val≤100
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
解决这道题,我们需要两个布尔变量定义是否有序(从大到小,从小到大,相等都视为有序)
bool a = true;
boo b = true;
这两个变量代表从大到小,从小到大,相等的情况。
代码如下:
int n;
cin >> n;
int *a = new int[n];
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
bool b = true;
bool c = true;
我们需要遍历数组中的元素,如果从小到大不符合,b = false;另外一种从大到小不符合,c = false;,最后再用一个if语句,完整代码如下:
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int *a = new int[n];
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
bool b = true;
bool c = true;
for(int i = 1;i < n;i++)
{
if(a[i] > a[i-1])
{
b = false;
}
if(a[i] < a[i-1])
{
c = false;
}
}
if(c || b)
{
cout << "sorted" << endl;
}
else
{
cout << "unsorted" << endl;
}
delete[] a;
return 0;
}