【蓝桥杯03】:如果ali]< ali+1] < a[i+2]< … < ali],则称ai至ai]为一段递增序列,长度为j-i+1。给定一个数列,请问数列中最长的递增序列有多长。

导读:本篇文章讲解 【蓝桥杯03】:如果ali]< ali+1] < a[i+2]< … < ali],则称ai至ai]为一段递增序列,长度为j-i+1。给定一个数列,请问数列中最长的递增序列有多长。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

958012eef2cb423e916f11304b187420.png

 

问题描述:

        在数列a[1], a[2], …, a[n]中,如果ali]< ali+1] < a[i+2]< … < ali],则称ai至ai]为一段递增序列,长度为j-i+1。
        给定一个数列,请问数列中最长的递增序列有多长。

输入格式:

        输入的第一行包含一个整数n。
        第二行包含n个整数a[1], a[2],…, a[n],相邻的整数间用空格分隔,表示给定的数列。

输出格式:

        输出—行包含一个整数,表示答案。

样例输入:

        7

        5   2   4   1   3    7   2

样例输入:

        3

评测用例规模与约定

        对于50%的评测用例,2<=n<=100,0<=数列中的数<=1000.
        对于所有评测用例,2 <= n <= 1000, 0 <=数列中的数<= 10000。


在数列a[1], a[2], …, a[n]中,如果ali]< ali+1] < a[i+2]< … < ali],则称ai至ai]为一段递增序列,长度为j-i+1。给定一个数列,请问数列中最长的递增序列有多长。

C语言解决:

//给定一个数列,请问数列中最长的递增序列有多长。长度j-i+1 
#include <stdio.h>
int main(){
	int a[100],n,i,j,c=0,temp=0;
	scanf("%d",&n);//第一行输入  控制输入几个数
	for(i=0;i<n;i++)
		scanf("%d",&a[i]); //第二行输入   输入n个数 
		
	for(j=0;j<n;j++){
		//前一位和后一位比较  就知道是不是递增序列 
		if(a[j+1] <= a[j]){ 
			if(temp > c)
				c = temp;
			temp = 1; 
		}
		else
			temp++;
	} 
	printf("%d\n",c);
	return 0;
}

运行结果示例: 

50771c7ced55437a8c094e759d481ce4.png

在数列a[1], a[2], …, a[n]中,如果ali]< ali+1] < a[i+2]< … < ali],则称ai至ai]为一段递增序列,长度为j-i+1。给定一个数列,请问数列中最长的递增序列有多长。

Python解决:

# 给定一个数列,请问数列中最长的递增序列有多长。长度j-i+1
n = int(input())  # 第一行输入整数
num = list(map(int, input().split(" ")))  # 因为列表第一个数为1
count = 1  # 存储递增长度
n_max = 0  # 最大长度
for i in range(1, n):  # i从1开始
    if num[i] > num[i-1]:
        count = count + 1
        if count > n_max:
            n_max = count
        pass # 直接退出
    else:
        count = 1
print(n_max)

运行结果示例:

b40c03fb663c48289ced5eaca32dd060.png

 总结

        本题从逻辑理解上并没有难度,大家再接再厉!!!

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73648.html

(0)
小半的头像小半