每日一题<>P1091 合唱队形>

简介: 每日刷题打卡

image.png

题目可以转换成要求挑选从低到高再到低最长的一列人,面对这种问题我们可以求出每个数两边开始最大的递增数量,最后将两个数列相加减一求最大值,就是最长的队伍长度,出列的人只需总人数减去队伍长度便可。

#include<iostream>
using namespace std;
int arr[200], l[200], r[200];
int main()
{
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) //初始化,最少也有自己一个构成序列
  {
    cin >> arr[i];
    l[i] = 1;
    r[i] = 1;
  }
  for (int i = 2; i <= n; i++)//从左到右
  {
    for (int j = 1; j < i; j++)
    {
      if (arr[i] > arr[j] && l[i] <= l[j]) //按要求更新表(后大于前由于初始化是一样的所以要<+)
      {
        l[i] = l[j] + 1;
      }
    }
  }
  for (int i = n - 1; i >= 1; i--)//从右往左
  {
    for (int j = i + 1; j <= n; j++)
    {
      if (arr[i] > arr[j] && r[i] <= r[j])
      {
        r[i] = r[j] + 1;
      }
    }
  }
  int total = 0;
  int max = 0;
  for (int i = 1; i <= n; i++)
  {
    total = l[i] + r[i] - 1;  //从左往右,从右往左,自身被数了两次,所以要减一
    if (total > max)
    {
      max = total;
    }
  }
  cout << n - max;
  return 0;
}

image.gif

目录
相关文章
|
4月前
|
C语言
c语言编程练习题:7-22 用天平找小球
c语言编程练习题:7-22 用天平找小球
51 0
|
4月前
|
C语言
c语言编程练习题:7-4 输出菱形图案
本题要求编写程序,输出指定的由“A”组成的菱形图案。
24 0
|
2天前
【牛客网】BC68 X形图案
【牛客网】BC68 X形图案
5 0
|
4月前
|
C语言
c语言编程练习题:7-59 打印菱形图案
c语言编程练习题:7-59 打印菱形图案
38 0
|
10月前
形图案(牛客)
形图案(牛客)
|
10月前
|
存储 C语言
【C语言—零基础第十一课】旋转大转盘之指针
在生活中我们应该玩过旋转大转盘游戏,指针指到哪个物品我就拿走哪一个物品,这个就是指针。在现实生活中你玩旋转大转盘游戏最后获奖了吗?还有一种就是我们的门牌号我们可以把它想象成为指针,只要我们和其他人说了我们的门牌号他就可以顺着门牌号找到你,而在我们C语言中也有指针。
79 0
|
测试技术
每日一题——旋转函数
每日一题——旋转函数
65 0
每日一题——旋转函数
|
算法 测试技术
LeetCode每日一题(7)——旋转函数
旋转函数 1.题目 2.示例 3.思路 4.代码 5.复杂度分析
102 0
LeetCode每日一题(7)——旋转函数
|
C语言
【C语言】BC68 X形图案题解
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
【C语言】BC68 X形图案题解
|
C++
蓝桥杯练习题三 - 纸牌三角形(c++)
蓝桥杯练习题三 - 纸牌三角形(c++)
102 0