1-9 最长连续递增子序列 (20 分)

1-9 最长连续递增子序列 (20 分),第1张

1-9 最长连续递增序列 (20 分)

1-9 最长连续递增子序列 (20 分)
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。

输入格式:
输入第1行给出正整数n(≤10
5
);第2行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。

输入样例:
15
1 9 2 5 7 3 4 6 8 0 11 15 17 17 10
结尾无空行
输出样例:
3 4 6 8
注意连续和非连续的差距还是挺大的,连续只要找前面和它挨着比它大的元素有几个选最大就好了,非连续可以用动态规划,最长公共子序列,二分查找很复杂。

#include 
#include 
 struct node
{
    int data;
    int count;
}s[100001];
int main()
{
    int n,i,j;
    scanf("%d",&n);
    for(i=0;is[j-1].data)
                s[i].count++;
            else
                break;
        }
    }
    int sum=0,t,z;
    for(i=0;i 

今天的月考考了这道题,但是当时没写出来,思路是有的,就是写不出来

#include

typedef struct node
{
    int *data;
    int maxsize;
}Node,*SeqList;
SeqList Init_SeqList(int m);
SeqList Init_SeqList(int m)
{
    SeqList L;
    L->data=(int*)malloc(sizeof(int)*m);
    L->maxsize=m;
    int d;
    for(int i=0;imaxsize;i++)
    {
        scanf("%d",&d);
            L->data[i]=d;
    }
return L;
}

int main()
{
    int m,i,count=1,max=0,t,s=0;
    scanf("%d",&m);
    SeqList L;
    L=Init_SeqList(m);

    for(int i=0;idata[j-1]data[j])
               count++;
            else
                break;
        }
        if(count>max)
        {
             max=count;
             t=i;
        }
    }
    for(int k=t;kdata[k]);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存