1. 程式人生 > >洛谷P1420 最長連號

洛谷P1420 最長連號

題目描述

輸入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;
}