1 条题解

  • 1
    @ 2024-10-21 15:07:05

    由于题目未说明给出的数是升序或降序的,故需手动排序,可采用冒泡排序的方法。 排序后,绝对值差小于等于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;
    }
    
    • 1

    信息

    ID
    1019
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    216
    已通过
    24
    上传者