题目背景
统计天数
题目描述
炎热的夏日,KC非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续N(1<=N<=10^7)天的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数。
输入输出格式
输入格式:
*1行:一个整数N。1<=N<=10^7
*2行:N个空格隔开的整数,表示连续N天的最高气温。0<=最高气温<=10^9。
输出格式:
*1行:一个整数,表示最高气温一直上升的最长连续天数。
楼主最开始做的时候,考虑的是先把气温存到一个一维数组里,在遍历一遍,统计出连续最高的天数,或者在输入的循环中统计出连续的天数,存到另一个数组,毕竟这样做很简单!!!
BUT 问题来了 天数N是1<=N<=10^7,这样做的话会很耗时,会TLE
所以,你输入的一定要用循环输入,这一段的耗时你是无法避免的。所以,可以在输入的与前一个进行比较,选择两个四个变量t,t0,day,ans;
day和ans最初的时候都是1,因为最少的连续天数就是一天。所以如如今天的气温t大于前一天的气温t0,day++,如果t<t0,将day储存的ans中,而且在每次存至前都会与ans进行比较,确定连续天数是最大!
/#include<bits/stdc++.h> //万能头文件
#include<iotream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
int a[100010];
int n,ans,t0,t,day,len;
while(scanf("%d",&n)!=EOF)
{
t0=-1;
day=0;
ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&t);
if(t>t0)
day++;
else
{
if(day>ans)
ans=day;
day=1;
}
t0=t;
}
cout<<ans<<endl;
}
return 0;
}