自己乱搞的答案对了但是有解释不通
查看原帖
自己乱搞的答案对了但是有解释不通
180453
wangyansong楼主2020/11/25 10:16
#include<bits/stdc++.h>
using namespace std;
int a[100005],f[100005],t;
int main()
{
	while(cin>>a[++t]);t--;
	for (int i=1;i<=t;i++)                                                             
        {                                                                    
            f[i]=1;                                                        
            for (int j=1;j<i;j++)                                                 
            	if (a[j]>=a[i]&&f[j]+1>f[i])                                    
               	 	f[i]=f[j]+1;                                                  
        }                                                                  
    	int maxx=0;                                                               
    	for (int i=1;i<=t;i++)    
		maxx=max(maxx,f[i]);
		memset(f,0,sizeof(f));
		int minn=0;
	for(int i=1;i<=t;i++)
	{
		f[i]=1;
		for(int j=1;j<i;j++)
		 if(a[i]>a[j]&&f[i]<f[j]+1)//真的不理解 
		 f[i]=f[j]+1;
	}
	for(int i=1;i<=t;++i){
		minn=max(minn,f[i]);//为啥取最大
	}
	printf("%d\n%d",maxx,minn);
}
2020/11/25 10:16
加载中...