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日

悬赏问题

  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法