1 条题解

  • 0
    @ 2024-12-24 9:49:24

    C :

    #include <stdio.h>
    int dp[1001];
    int a[1001];
    int Max(int a,int b)
    {
    	if(a>b)
    	return a;
    	else
    	return b;
    }
    int main()
    {
    	int n,i,max,index,j,b;
    	while(scanf("%d",&n)!=EOF)
    	{
    		max=-99999;
    		for(i=0;i<n;i++)
    		scanf("%d",&a[i]);
    		for(i=0;i<n;i++)
    		{
    			dp[i]=1;
    			for(j=0;j<=i-1;j++)
    			{
    				if(a[j]<a[i]&&dp[i]<dp[j]+1)
    				dp[i]=Max(1,dp[j]+1);
    			}
    			if(max<dp[i])
    			max=dp[i];
    		}
    		printf("%d\n",max);
    	}
    	return 0;
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n;
    	//freopen("F:\\QQDownlaod\\Laputa\\2015.3.23\\0320\\acm\\as\\test.in","r",stdin);
    	while(~scanf("%d",&n)){
    		int num[1005];
    		for (int i=0;i<n;i++) scanf("%d",&num[i]);
    		int d[1005];
    		memset(d,0,sizeof(d));
    		d[0]=1;
    		for (int i=1;i<n;i++){
    			int ans=0;
    			for (int s=0;s<i;s++){
    				if (num[i]>num[s]) ans=max(ans,d[s]);
    			}
    			d[i]=ans+1;
    		}
    		int ans=0;
    		for (int i=0;i<n;i++){
    			ans=max(ans,d[i]);
    		}
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    870
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者