【2012年中山纪念中学信息学竞赛初一选拔赛一】美丽的纪中(a)

这是一道关于计算最大爬坡高度的编程题,来源于2012年中山纪念中学初一选拔赛。题目要求找出一条路径中连续上升序列的最大高度差。给定一系列地形高度数据,程序需找出并输出最大的爬坡高度。示例输入和输出展示了不同情况下的解题结果。解决方案是遍历路径,记录连续上升序列的最大高度差。
摘要由CSDN通过智能技术生成

【2012年中山纪念中学信息学竞赛初一选拔赛一】美丽的纪中(a)

(File IO): input:a.in output:a.out 时间限制: 1000 ms 空间限制: 262144 KB

【题目描述】
纪中分新旧校区,整个老区红墙绿瓦、飞檐雕梁、厚重古朴、气势恢宏。新区主要为近十年先后竣工的一批与旧区格调一致的现代化建筑。校园内树木参天,花香绿浓,厚重典雅的宫殿式建筑与颇具时代感的现代化大楼交相辉映,景致怡人。
凤凰花红 纪中最美!
寿屏公园是纪中最独特的一个风景线,上面的道路崎岖不平。有一天你亲自走了一番,并用N个数字表示路线上N个点的高度,突然你对最大的爬坡高度产生兴趣,例如对于路线:12 3 5 7 10 6 1 11,其中有两次连续爬坡,第一次是3 5 7 10,爬坡高度为10-3=7,第二次为1 11,爬坡高度为11-1=10。
给定N个数字表示高度,你决定编写程序来解决。

【输入】
第一行包含一个正整数N(1<=N<=1000),第二行包含N个正整数Pi(1<=Pi<=1000),表示路线上N个地方的高度。

【输出】
输出最大的爬坡高度,如果路线中没有出现上坡则输出0。

【样例输入】
样例输入1
5
1 2 1 4 6
样例输入2
8
12 20 1 3 4 4 11 1
样例输入3
6
10 8 8 6 4 3

【样例输出】
样例输出1
5
样例输出2
8
样例输出3
0

【提示】
样例2中的上坡有3段,分别是12-20,1-3-4和4-11,注意1-3-4-4-11不算是上坡,因为4-4这段并不是上坡。

【思路】
其实很简单,我们只需要求出连续上升序列的最大个数就可以了。

【AC代码】

#include<bits/stdc++.h>
using namespace std;
int n,a[1001],maxn;
int main(){
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout); 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int x,y,flag=0;
	for(int i=2;i<=n;i++){
		if(a[i]>a[i-1]){
			if(!flag){
				x=a[i-1];
				y=a[i];
				flag=1;
			}else{
				y=a[i];
			}
		}else{
			if(flag){
				if((y-x)>maxn){
					maxn=y-x;
				}
				flag=0;
			}
		}
	}
	if(flag){
		if((y-x)>maxn){
			maxn=y-x;
		}
		flag=0;
	}
	cout<<maxn;
	fclose(stdin);
	fclose(stdout);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值