poj 2757

来源:互联网 发布:人工智能程序语言 编辑:程序博客网 时间:2024/06/03 19:42

求最大上升子序列

分析数据:

我们发现(1,3,5,8)的前一位是(1,3,5)。(1,7)的前位是(1),也就是说后一位数据要想加在上面,就是前卫最大的字串的长度再加上其本身。

这样我们就有了一个规律。

#include<stdio.h>int main(){  int a[1000][2];  int n,j,i,max;  for(i=0;i<n;i++){ scanf("%d",&a[i][0]);a[i][1]=1;} for(i=1;i<n;i++){ max=0;for(j=i-1;j>=0;j--){ if(a[j][0]<a[i][0])  {    if(max<a[j][1])    max=a[j][1];   }}  a[i][1]+=max;} max=0;  for(i=0;i<n;i++)  if(max<a[i][0])  max=a[i][0];} printf("%d\n",max);


 

0 0