信息学奥赛一本通 1116:最长平台 | OpenJudge NOI 1.9 09

【题目链接】

ybt 1116:最长平台
OpenJudge NOI 1.9 12:最长平台

【题目考点】

1. 数组中做统计

2. 求最大值

【解题思路】

  • 设临时统计长度len(初值为0),最大长度maxLen(初值0),上一个数字lastNum(初值设为与要输入的数字都不同的数字,如-1)
  • 将数据输入整型数组a
  • 遍历数组a
    • 如果当前查看的元素a[i]与上一个数字lastNum相同,那么len增加1
    • 如果当前查看的元素a[i]与上一个数字lastNum不同,那么完成对一个“平台”的长度统计,看这个平台的长度是不是比当前已知的最大长度maxLen更大,如果是,那么将maxLen设为该长度。而后要看的是一个新的数字a[i]的平台,将lastNum设为a[i],已经统计了1个数字a[i],将len设为1。
  • 遍历结束后,还要尝试更新一次maxLen,因为最后统计的平台长度还没与maxLen比较。
  • 输出maxLen

【题解代码】

解法1:

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n, len = 0, maxLen = 0, lastNum = -1, num;//len:平台长度 maxLen:最大平台长度 lastNum:上一个数。 
	cin>>n; 
	for(int i = 0; i < n; ++i)
	{
		cin>>num;
		if(num == lastNum)//如果这个数和上一个数相同 
			len++;
		else//如果这个数和上一个数不同 
		{
		    if(len > maxLen)
				maxLen = len;
			lastNum = num;
			len = 1;
		}
	}
	if(len > maxLen)
		maxLen = len;
	cout<<maxLen;
	return 0;
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页