原题:给定一个整型数组b[0:n], b 中连续相等的元素构成的子序列称为平台.试设计算法,求 b 中最长平台的长度.
分析:用 max 表示已求得平台的最大长度, curr 表示当前当前正在处理的平台的长度, 当 max < curr 时, 将 curr 赋值给 max 即可.
#include<iostream>
#include<time.h>
#define ElemType int
#define SIZE 30
using namespace std;
int MaxLength(ElemType array[SIZE], int n)
{
int max = 1, curr = 1;
int start = 0;//当前平台的起始位置
for(int i = 1; i < n; i++)
{
if(array[i] == array[start])
{
curr++;//当前平台长度自加1
}
else
{
if(max < curr)
{
max = curr;//用 max 记住最长平台的最大长度
}
start = i;//设置新的平台开始位置及当前平台的长度
curr = 1;
}
}
return max;
}
void main()
{
ElemType array[SIZE];
srand((unsigned)time(NULL));
for(int i = 0; i < SIZE; i++)