方法一:
先选取第一个数字作为起点,然后递归枚举,直到递归结束
再选取第二个数字作为起点,然后递归枚举,直到递归结束
方法二:
int n=0;
int ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
dp[1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=i-1;j++)
{
if(arr[j]<=arr[i] && (dp[j]+1)>dp[i])
{
dp[i]=dp[j]+1;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<dp[i]<<" ";
}
return 0;
我先耐心的写出递归方程再转成状态转移方程。!!!nice!