描述
五一到了,PKU-ACM隊組織大家去登山觀光,隊員們發現山上一個有N個景點,并且決定按照順序來瀏覽這些景點,即每次所瀏覽景點的編號都要大于前一個瀏覽景點的編號,同時隊員們還有另一個登山習慣,就是不連續瀏覽海拔相同的兩個景點,并且一旦開始下山,就不再向上走了,隊員們希望在滿足上面條件的同時,盡可能多的瀏覽景點,你能幫他們找出最多可能瀏覽的景點數么?
輸入
Line 1: N (2 <= N <= 1000) 景點數
Line 2: N個整數,每個景點的海拔
輸出
最多能瀏覽的景點數
樣例輸入
8
186 186 150 200 160 130 197 220
樣例輸出
4
#include <iostream>
#include <cstdio>
using namespace std;
int h[1005], b[1005], c[1005], n, maxt;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
cin >> h[i];
for (int i = 1; i <= n; i++)
{
b[i] = 1;
for (int j = 1; j <= i - 1; j++)
if (h[j] < h[i] && b[j] + 1 > b[i])
b[i] = b[j] + 1;
}
for (int i = n; i >= 1; i--)
{
c[i] = 1;
for (int j = i + 1; j <= n; j++)
if (h[j] < h[i] && c[j] + 1 > c[i])
c[i] = c[j] + 1;
}
for (int i = 1; i <= n; ++i)
if (b[i] + c[i] > maxt)
maxt = b[i] + c[i];
cout << maxt - 1 << endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374626.html
標籤:其他
上一篇:程式人生之告別
下一篇:楊輝三角形(簡明易懂)
