每日一题<>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月前
【牛客网】BC68 X形图案
【牛客网】BC68 X形图案
34 0
|
4月前
|
C语言
c语言编程练习题:7-22 用天平找小球
c语言编程练习题:7-22 用天平找小球
65 0
|
4月前
|
C语言
c语言编程练习题:7-4 输出菱形图案
本题要求编写程序,输出指定的由“A”组成的菱形图案。
46 0
|
1月前
|
Python
【Leetcode刷题Python】473. 火柴拼正方形
LeetCode题目473的Python编程解决方案,题目要求使用给定长度的火柴棒拼成一个正方形,不能折断火柴棒且每根火柴棒必须使用一次,判断是否能拼成正方形。
17 2
|
3月前
|
C语言
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
【C语言刷题每日一题#牛客网BC69】——空心正方形图案
|
3月前
|
C语言
【C语言刷题每日一题#牛客网BC68】——X形图案
【C语言刷题每日一题#牛客网BC68】——X形图案
|
4月前
【一刷《剑指Offer》】面试题 20:顺时针打印矩阵
【一刷《剑指Offer》】面试题 20:顺时针打印矩阵
|
4月前
|
测试技术 C语言
每天一道C语言编程:Cylinder(圆柱体问题)
每天一道C语言编程:Cylinder(圆柱体问题)
28 0
|
10月前
|
算法 搜索推荐 程序员
C语言第四练——利用海伦公式编程求三角形的面积
C语言第四练——利用海伦公式编程求三角形的面积
159 0
|
机器学习/深度学习 Python
【每周一坑】输出三角形
如果输出固定长度对你来说太简单了,可以增加一个输入 n(n为正整数且 n>3),作为输出三角形第一行星号的数量。