slgqhcsdn 2022-02-14 21:30 采纳率: 76.9%
浏览 27
已结题

关于#c++#的问题,如何解决?(优美的排列)

优美的数列
【试题描述】
小明同学最近喜欢上研究数列,他认为优美的数列应该长成下面这样子
A1<A2 <A3....Ak-1<AkAk+1....An-1>An譬如:125631是一个优美的数列;
123231不是一个优美的数列:
并且规定两端的也不可以为最大才是优美的数列,现在给你一个N个数列,判断这些
数列是不是优美的数列,如果是输出yes,否则输出no;

【输入格式】
第一行输入一个数N,表示有N个数列;
接下来有N行,每行若干个用空格隔开的正整数,每行以0结尾:

【输出格式】
输出包含N行,每行一个yes或者no1

【样例输入】
4
123210
1222210
543210
153210
【样例输出】
yes
no
no
yes
【数据范围】
对于20%的数:1<=N<=3,每行不包括行末的0为3个数,如:1310:
对于100%的数:1<=N<=10,每行不超过100个数,每个数小于等于10000:

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-02-14 22:12
    关注
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    bool check(const vector<int> &nums)
    {
        if (nums.size() < 3)
            return false;
        if (nums[0] >= nums[1])
            return false;
        size_t n = nums.size();
        size_t i = 1;
        while (i < n - 1 && nums[i] < nums[i + 1])
            i++;
        if (i == n - 1)
            return false;
        while (i < n - 1 && nums[i] > nums[i + 1])
            i++;
        return i == n - 1;
    }
    
    int main()
    {
        int n;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            vector<int> nums;
            int a;
            while (cin >> a)
            {
                if (a == 0)
                    break;
                nums.push_back(a);
            }
            if (check(nums))
                cout << "yes\n";
            else
                cout << "no\n";
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算