目录
1.题目描述
描述
输入描述:
输出描述:
示例1
示例2
示例3
2.解题
1.题目描述
描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围: 3≤�≤50 3≤n≤50 序列中的值都满足 1≤���≤100 1≤val≤100
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
示例1
输入:
5 1 6 9 22 30复制输出:
sorted复制
示例2
输入:
5 3 4 7 2 10复制输出:
unsorted复制
示例3
输入:
5 1 1 1 1 1复制输出:
sorted
2.解题
解法1:
#include <stdio.h>int main(){int n = 0;int arr[20000] = { 0 };scanf("%d", &n);int cont = 0;int cout = 0;int j = 0;for (j = 0; j < n; j++){scanf("%d", &arr[j]);}int i = 0;for (i = 0; i < n-1; i++){if (arr[i] <= arr[i + 1]){cont++;//判断是不是升序}else if (arr[i] >= arr[i + 1]){cout++;//判断降序}}if (cout == n-1|| cont == n-1){printf("sorted\n");}else{printf("unsorted\n");}return 0;}
解法2:
#include <stdio.h>int main()
{int n = 0;int arr[50] = {0};scanf("%d", &n);int i = 0;int flag1 = 0;int flag2 = 0;for(i=0; i<n; i++){scanf("%d", &arr[i]);if(i>0){if(arr[i]>arr[i-1])flag1 = 1;else if(arr[i]<arr[i-1])flag2 = 1;}}//flag1 和 flag2 都为1是乱序的if(flag1+flag2 > 1)printf("unsorted\n");elseprintf("sorted\n");return 0;
}