1. 程式人生 > 其它 >P1970 花匠

P1970 花匠

技術標籤:演算法pythonleetcode動態規劃資料結構

原題地址

思路

思路其實很簡單,只要判斷有幾個“轉折點”,再加上2個端點就可以了。注意:1.與前面的花高度恰好相同的點並不是轉折點,所以要繼承前面的點的上升或下降趨勢;2.只有一株花的情況需要特判。


程式碼

#include<iostream>
#include<cstdio>
using namespace std;
int n,ans,s,h[1000010];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&h[i]);
    }
    if(h[1]>h[2]) s=1;//一開始特判。 
    for(int i=3;i<=n;i++)
    {
        if(h[i]==h[i-1]) continue;//相等的情況 。 
        if(h[i]<h[i-1])
        {
            if(s==0) ans++,s=1; //現在下降剛才上升。 
        } else if(s==1) ans++,s=0;//現在上升剛才下降。 
    }
    cout<<ans+2;//輸出轉折點+2。 
    return 0;
}

結束了………………