CSP岛屿问题

一、题目信息

CSP试题编号: 202109-2
CSP试题名称: 非零段划分

二、基本思路

        岛屿问题的思路,例题可见AcWing2014。

三、代码

#include 
#include 
#include 
using namespace std;

const int MH = 10010;
int datas[500005],cnt[MH];//init done zero
//第一个数组用于记录数据值,第二个数组用于记录某一个高度的山顶与山谷个数

int main()
{
    int n;
    scanf("%d",&n);
    datas[0]=datas[n+1]=0;//border
    for(int i=1;i<=n;i++)
        scanf("%d",&datas[i]);

    n = unique(datas,datas+n+2)-datas;
    //unique()返回的是地址,用途是去重,这一步去重的同时获取了数据个数

    for(int i=1;idatas[i+1])//peak
            cnt[datas[i]]++;
        else if(datas[i-1]>datas[i] && datas[i]0;i--)
    {
        now_island+=cnt[i];
        max_island = max(now_island,max_island);
    }
    printf("%d\n",max_island);
    return 0;
}

你可能感兴趣的:(算法,数据结构)