题目链接:https://ac.nowcoder.com/acm/problem/15032
解题思路:暴力 动态规划
暴力:
#include <bits/stdc++.h>
using namespace std;
int a[105];
int main()
{
int n,s=1;
//bool flag=true;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
int k=a[i];
for(int j=i+1;j<=n;j++){
if(k<=a[j]){
s++;
k=a[j];
}
}
if(s>=30){
cout<<"yes";
return 0;
}
s=1;
}
cout<<"no";
return 0;
}
动态规划:
#include <iostream>
using namespace std;
int a[105],dp[105];
int main()
{
int n,s=0;
cin>>n;
fill(dp,dp+n,1);//初始化数组为1
for(int i=1;i<=n;i++){
cin>>a[i];
}
dp[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=i-1;j++){
if(a[i]>=a[j]){
dp[i]=max(dp[i],dp[j]+1);//以i结尾的最长子序列
}
}
s=max(s,dp[i]);
}
for(int i=1;i<=n;i++){
cout<<dp[i]<<" ";
}
return 0;
}