1 条题解
-
1
由于题目未说明给出的数是升序或降序的,故需手动排序,可采用冒泡排序的方法。 排序后,绝对值差小于等于1的数之间经过连续消除会留下其中最大的一个数,如果相邻的数之间存在绝对值差大于1的,则无法被消去,又会留下一个数,故不满足题意。
#include<stdio.h> int t, n, a[100]; void solve() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } //排序 for (int i = 1; i < n; i++) { for (int j = 1; j <= n - i; j++) { if (a[j] > a[j + 1]) { int x = a[j]; a[j] = a[j + 1]; a[j + 1] = x; } } } //遍历是否有相邻的数的绝对值超过1的 for (int i = 1; i < n; i++) { if (a[i + 1] - a[i] > 1) { printf("NO\n"); return; } } printf("YES\n"); } int main() { scanf("%d", &t); while (t--) { solve(); } return 0; }
信息
- ID
- 1019
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 216
- 已通过
- 24
- 上传者