_Geburah @ 2024-04-16 21:33:24
#include<bits/stdc++.h>
using namespace std;
int n;
int arr[1001];
int dp[1001]={1,1};
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>arr[i];
for(int i=1;i<=n;i++)
{
int dpj=-1,jj=0;
for(int j=1;j<=i;j++)
{
if(dp[j]>dpj)
{
dpj=dp[j];
jj=j;
}
}
if(arr[i]>arr[jj])
{
dp[i]=dp[jj]+1;
//cout<<jj;
}
}
sort(dp+1,dp+1+n);
cout<<dp[n];
}
by sundingjia @ 2024-04-26 21:00:04
首先,你数组开小了
其次,……(省略100字)
我帮你改了一下(注释里为改正前代码)
#include<bits/stdc++.h>
using namespace std;
int n;
int arr[/*1001,范围小了*/5001];
int dp[/*1001,同上*/5001]/*={1,1}不能这样初始化*/;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>arr[i];
for(int i=1;i<=n;i++)dp[i]=1;//正确初始化的方法
for(int i=/*1,1你已经设过了*/2;i<=n;i++)
{
int dpj=/*-1,jj=0,没看懂*/arr[i];
for(int j=1;j<=i;j++)
{
if(/*dp[j]>,what do you want to do?*/arr[j]<dpj)
{
//dpj=dp[j];同上。
dp[i]=max(dp[i],dp[j]+1);
//jj=j; 同上。
}
}
// if(arr[i]>arr[jj])
// {
// dp[i]=dp[jj]+1;
// //cout<<jj;
// }
//what do you want to do?
}
sort(dp+1,dp+1+n);
cout<<dp[n];
/*最好写上return 0*/return 0;
}
无耻的求关
by _Geburah @ 2024-06-01 12:00:46
<a>