每日一题<>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

目录
相关文章
|
3月前
【牛客网】BC68 X形图案
【牛客网】BC68 X形图案
27 0
|
3月前
|
C语言
c语言编程练习题:7-22 用天平找小球
c语言编程练习题:7-22 用天平找小球
59 0
|
3月前
|
C语言
c语言编程练习题:7-4 输出菱形图案
本题要求编写程序,输出指定的由“A”组成的菱形图案。
42 0
|
2月前
|
C语言
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
|
2月前
|
C语言
【C语言刷题每日一题#牛客网BC68】——X形图案
【C语言刷题每日一题#牛客网BC68】——X形图案
|
2月前
|
C语言
C语言----要喝10升水才能解渴,但现在只有一个深 h 厘米,底面半径是 r 厘米的水杯,牛牛最少要喝多少杯水才能解渴
C语言----要喝10升水才能解渴,但现在只有一个深 h 厘米,底面半径是 r 厘米的水杯,牛牛最少要喝多少杯水才能解渴
|
3月前
【编程题-错题集】kotori和气球(组合数学)
【编程题-错题集】kotori和气球(组合数学)
|
3月前
|
C语言
c语言编程练习题:7-59 打印菱形图案
c语言编程练习题:7-59 打印菱形图案
51 0
|
9月前
|
算法 搜索推荐 程序员
C语言第四练——利用海伦公式编程求三角形的面积
C语言第四练——利用海伦公式编程求三角形的面积
152 0