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

目录
相关文章
|
6月前
|
C语言
c语言编程练习题:7-22 用天平找小球
c语言编程练习题:7-22 用天平找小球
69 0
蓝桥杯:2021省赛 例题:直线
蓝桥杯:2021省赛 例题:直线
54 0
|
5月前
|
C语言
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
|
5月前
|
C语言
【C语言刷题每日一题#牛客网BC68】——X形图案
【C语言刷题每日一题#牛客网BC68】——X形图案
|
6月前
【编程题-错题集】kotori和气球(组合数学)
【编程题-错题集】kotori和气球(组合数学)
1264:【例9.8】合唱队形 2021-01-15
1264:【例9.8】合唱队形 2021-01-15
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
79 0
|
机器学习/深度学习 数据采集 人工智能
【每周一坑】杨辉三角形
了解完背景知识之后,来看看对应的题目,定义一个函数 yanghui() ,传入正整数参数 M、N,分别代表杨辉三角形第 M 行,左起第 N 个数字(M,N 都从 0 开始计算)。入超出范围则返回 invalid query 。
|
存储
剑指Offer - 面试题14:剪绳子
剑指Offer - 面试题14:剪绳子
83 0