zoukankan      html  css  js  c++  java
  • 算法与数据结构第一次上机

    程序填空题:逆转链表(单独写)
    最长连续递增子序列 (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<iostream>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	int *a=new int [n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>a[i];
    	}
    	int cnt = 1,start=0;
    	int max=1;
    	for(int i = 1;i < n; i++)
    	{
    		if(a[i]>a[i-1])
    		{
    			cnt++;
    			if(cnt>max)
    			{
    				start = i - cnt +1;  
    				max=cnt;
    			}	
    		}else if(a[i]<=a[i-1])
    		{
    			cnt=1;
    		}
    	}
    	for(int i=start;i<start+max;i++)
    	{
    		cout<<a[i];
    		if(i<start+max-1)
    		{
    			cout<<' ';
    		}
    	 } 
    }
    
  • 相关阅读:
    linux 查看安装软件位置(持续跟新)
    POJ 3661 Running (DP思想)
    stringstream的用法
    关于实验室搬家
    POJ 搜索(2)
    Treap的插入删除实现
    碰到一道不错的扩展欧几里德题目 whu 1338
    SRM 144
    关于无向图双连通问题
    POJ 动态规划(2)
  • 原文地址:https://www.cnblogs.com/wangmou-233-1024-com/p/13649086.html
Copyright © 2011-2022 走看看