zoukankan      html  css  js  c++  java
  • 最长上升子序列

    链接:https://www.nowcoder.com/questionTerminal/d83721575bd4418eae76c916483493de
    来源:牛客网

    [编程题]最长上升子序列
    广场上站着一支队伍,她们是来自全国各地的扭秧歌代表队,现在有她们的身高数据,请你帮忙找出身高依次递增的子序列。 例如队伍的身高数据是(1、7、3、5、9、4、8),其中依次递增的子序列有(1、7),(1、3、5、9),(1、3、4、8)等,其中最长的长度为4。
    输入描述:
    输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000)。
    
    紧接着第二行包含n个正整数m(1≤n≤10000),代表队伍中每位队员的身高。


    输出描述:
    对应每一组数据,输出最长递增子序列的长度。
    示例1

    输入

    7
    1 7 3 5 9 4 8
    6
    1 3 5 2 4 6

    输出

    4
    4


    #include<stdio.h>
    #define N 1020
    int dp[N],a[N];
    int max(int i,int j);
    int main(void)
    {
    	int n,i,j,longest;
    	while(scanf("%d",&n)!=EOF)
    	{
    		longest=1;
    		for(i=1;i<=n;i++)
    		{
    			scanf("%d",&a[i]);
    			dp[i]=1;
    		}
    		for(i=2;i<=n;i++)
    		{
    			for(j=1;j<i;j++)
    			  if(a[i]>a[j])
    				dp[i]=max(dp[j]+1,dp[i]);
    			longest=max(dp[i],longest);
    		}
    		printf("%d
    ",longest);
    	}
    	
    }
    int max(int i,int j)
    {
    	if(i>j)
    		return i;
    	return j;
    }

  • 相关阅读:
    OWIN启动项的检测
    Katana概述
    update-database时出现Cannot attach the file
    数据并行
    SpinLock(自旋锁)
    屏障
    同步操作
    T4文本模板
    托管线程中的取消
    监视器
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003073.html
Copyright © 2011-2022 走看看