洛谷題解 P1420 【最長連號】

在我的博客食用效果更佳!https://www.cbw2007.tk/articles/luogu-P1420-sol/,原文發佈於2018年07月27日。更多見在不同的網站瀏覽本站內容

原題鏈接: P1420 數的計算 - 洛谷 | 計算機科學教育新生態

此題其實不用數組也能通過,只不過稍微有些難理解。

定義兩個變量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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章