#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b[3000],c[3000],d[3000],maxn,ans=0;
cin>>a;
for(int i=1;i<=a;i++)
{
cin>>b[i];
}
c[1]=1;
for(int i=2;i<=a;i++)
{
maxn=0;
for(int j=1;j<i;j++)
{
if(b[i]>b[j])
{
if(c[j]>maxn)
{
maxn=c[j];
}
}
}
c[i]=maxn+1;
}
d[1]=1;
for(int i=a-1;i>=1;i--)
{
maxn=0;
for(int j=i+1;j<=a;j++)
{
if(b[i]>b[j])
{
if(d[j]>maxn)
{
maxn=d[j];
}
}
}
d[i]=maxn+1;
}
for(int i=1;i<=a;i++)
{
if(c[i]+d[i]>ans)
{
ans=c[i]+d[i];
}
}
cout<<a-(ans-1);
}
合唱队形(c++),大家帮我看看是哪错了!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- _Youngyx 2021-10-24 18:51关注
#include <bits/stdc++.h> using namespace std; int a[102], dp1[102], dp2[102]; int n, mid, ans = 0, mx; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { mx = 0; for (int k = 1; k < j; k++) { if (a[k] < a[j]) { mx = max(mx, dp1[k]); } } dp1[j] = mx + 1; } for (int j = n; j >= i; j--) { mx = 0; for (int k = n; k > j; k--) { if (a[k] < a[j]) { mx = max(dp2[k], mx); } } dp2[j] = mx + 1; } ans = max(ans, dp1[i] + dp2[i] - 1); } printf("%d", n - ans); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 求解vmware的网络模式问题
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
- ¥15 springboot 3.0 实现Security 6.x版本集成
- ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
- ¥30 请帮我解决一下下面六个代码
- ¥15 关于资源监视工具的e-care有知道的嘛
- ¥35 MIMO天线稀疏阵列排布问题
- ¥60 用visual studio编写程序,利用间接平差求解水准网
- ¥15 Llama如何调用shell或者Python
- ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?