今日开启学习传感器:
主要是运用Naoqi上的ALSensors(负责产生与传感器相应的事件)、ALBattery(负责产生与机器人电池硬件相关的事件)、ALBodyTemperature、ALChestButton、ALFsr、ALTouch、ALInfrared、ALSonar(用于超声波测距)模块来进行传感器的实现。
算法题:
题目描述
炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续 N(1 \leq N \leq 10^6)N(1≤N≤106) 的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数。
输入格式
第 1 行:一个整数 NN 。1 \leq N \leq 10^61≤N≤106
第 2 行:NN个空格隔开的整数,表示连续 NN 天的最高气温。0 \leq0≤ 最高气温 \leq 10^9≤109 。
输出格式
1 行:一个整数,表示最高气温一直上升的最长连续天数。
输入输出样例
输入 #1复制
10 1 2 3 2 4 5 6 8 5 9
输出 #1复制
5
想法思路:
定义一个数组来存放上升字序的个数,再通过进行大小比较输出最长的上升字序的个数。
然后看了别人的代码可以简化这个数组这一步,运用无数组的方法
代码如下
#include <iostream>
using namespace std;
int main()
{
int N;
int cnt = 0, res = 0;
int pre = -1, now = 0;
cin >> N;
for(int i=0; i<N; ++i)
{
cin >> now;
if( now > pre ) {
cnt++;
}
else { //如果当前的那个小于前一个 直接把计数的cnt给res
res = cnt>res ? cnt:res; //不是直接赋给res,要先和res当前的值比较
cnt = 1; //注意cnt初始一定是1,比如1 2,已经是连续两天了
}
pre = now; //pre前移一个 开始下一次循环
}
res= cnt>res ? cnt:res; //最后一次判断大小,比如4 5 6 7 8,假如这时已经跳出循环了,如果没有这句就不能和当前res判断大小了
cout << res;
return 0;
}