强国豪,林中霖 2023-07-24 16:10 采纳率: 100%
浏览 49
已结题

关于#c++#的问题,如何解决?

第1题 最长上升序列II
有N个数放在一个圆周上,可以从任意一个位置开始按照顺时针方向访问数据一圈,沿途可以挑选一些数,要求这些数是上升的(一个比一个大)。问最多能选多少个数?

输入格式
第一行:1个整数N,范围在1到100
第二行有N个整数,每个数范围在1到1000000

输出格式
最多挑选的个数。

输入/输出例子1
输入:

8

2 9 3 5 6 7 1 5

输出:

6

用c++98咋写??

  • 写回答

5条回答 默认 最新

  • threenewbee 2023-07-24 16:32
    关注

    思路,将这个数组复制一份,首尾相接
    然后依次判断是否是上升序列

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        int arr[n * 2];
        for (int i = 0; i < n; i++)
        {
            int x;
            cin >> x;
            arr[i] = arr[i + n] = x;
        }
        int ma = 0;
        int curr = 1;
        for (int i = 1; i < n * 2; i++)
        {
            if (arr[i] > arr[i - 1])
                curr += 1;
            else
                curr = 1;
            if (curr > ma) ma = curr;
        }
        cout << (ma > n ? n : ma);
           return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日

悬赏问题

  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成