求数组中的最长平台

来源:互联网 发布:mac在美国多少钱一支 编辑:程序博客网 时间:2024/04/30 09:38

原题:给定一个整型数组b[0:n], b 中连续相等的元素构成的子序列称为平台.试设计算法,求 b 中最长平台的长度.
分析:用 max 表示已求得平台的最大长度,  curr 表示当前当前正在处理的平台的长度, 当 max < curr 时, 将 curr 赋值给 max 即可.

#include<iostream>#include<time.h>#define ElemType int#define SIZE 30using 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++){array[i] = rand()%4 + 1;cout<<array[i]<<" ";if(0 == (i+1)%10){cout<<endl;}}cout<<endl;cout<<"数组 array 中最长平台的长度为: "<<MaxLength(array, SIZE)<<endl;cout<<endl;}


 

原创粉丝点击