洛谷P1420 最長連號
阿新 • • 發佈:2018-12-24
題目描述
輸入n個正整數,(1<=n<=10000),要求輸出最長的連號的長度。(連號指從小到大連續自然數)
輸入輸出格式
輸入格式:
第一行,一個數n;
第二行,n個正整數,之間用空格隔開。
輸出格式:
一個數,最長連號的個數。
輸入輸出樣例
輸入樣例#1: 複製
10 3 5 6 2 3 4 5 6 8 9
輸出樣例#1: 複製
5
這個題我用動態規劃來做,首先設定ans陣列,第一項設為1,之後如果滿足a陣列的後一項等於前項+1,則ans的對應項+1,否則重新置為1,最好排序ans陣列,輸出其最大項極為答案。
#include<iostream> #include<algorithm> using namespace std; int main() { int n; cin>>n; int a[10001]; int ans[10001]; for(int i=0;i<n;i++){ cin>>a[i]; } ans[0] = 1; for(int i=0;i<n;i++){ if(a[i]+1==a[i+1]){ ans[i+1] = ans[i]+1; } else { ans[i+1] = 1; } } sort(ans,ans+n); cout<<ans[n-1]<<endl; return 0; }