在我的博客食用效果更佳!https://www.cbw2007.tk/articles/luogu-P1420-sol/,原文發佈於2018年07月27日。更多見在不同的網站瀏覽本站內容
此題其實不用數組也能通過,只不過稍微有些難理解。
定義兩個變量a,b。其中,a表示上一個數,b表示新讀入的數。
按樣例來說,a,b的交替是這樣的:
10
3 5 6 2 3 4 5 6 8 9
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
a | 3 | 3 | 5 | 6 | 2 | 3 | 4 | 5 | 6 | 8 |
b | 5 | 6 | 2 | 3 | 4 | 5 | 6 | 8 | 9 |
代碼如下:
#include<iostream>
using namespace std;
int main()
{
int n,a,b,s=1,maxn=0;//s代表當前連續長度,默認爲1(因爲第一個自己也算一個);maxn代表最大連續長度。
cin>>n;
cin>>a;//輸入第一個數
for (int i=2; i<=n; i++)//注意從第二個數開始,因爲第一個已讀過
{
cin>>b;//輸入當前數
if (b-a==1)//如果與上一個數相差1
s++;//當前連續長度+1
else
{
if (s>maxn)//如果當前連續長度(不算自己)比最大連續長度長
maxn=s;//更新最大連續長度
s=1;//初始化(自己也算一個!)
}
a=b;//成爲即將的“上一個數”
}
cout<<maxn;
return 0;
}