藍橋杯 連號區間數(迴圈)

2021-10-09 00:21:15 字數 979 閱讀 2705

題目

小明這些天一直在思考這樣乙個奇怪而有趣的問題:

在1~n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是:

如果區間[l, r] 裡的所有元素(即此排列的第l個到第r個元素)遞增排序後能得到乙個長度為r-l+1的「連續」數列,則稱這個區間連號區間。

當n很小的時候,小明可以很快地算出答案,但是當n變大的時候,問題就不是那麼簡單了,現在小明需要你的幫助。

輸入格式:

第一行是乙個正整數n (1 <= n <= 50000), 表示全排列的規模。

第二行是n個不同的數字pi(1 <= pi <= n), 表示這n個數字的某一全排列。

輸出格式:

輸出乙個整數,表示不同連號區間的數目。

示例:使用者輸入:

43 2 4 1

程式應輸出:

7使用者輸入:

53 4 2 5 1

程式應輸出:

9解釋:

第乙個用例中,有7個連號區間分別是:[1,1], [1,2], [1,3], [1,4], [2,2], [3,3], [4,4]

第二個用例中,有9個連號區間分別是:[1,1], [1,2], [1,3], [1,4], [1,5], [2,2], [3,3], [4,4], [5,5]

解析該題目可用雙重迴圈,得到所有可能的排列結果。我沒有想到的是,通過第二重迴圈就可以找到最大最小值,在通過最大和最小值的差對比下標的差即可得出是否位連號。

**

#includeusing namespace std;

/* *運用了雙重迴圈,求最大最小值

*!:沒有想到利用第二重迴圈求最大最小值

**/

int main();

for(int i=0;imax) max = data[j];

if(data[j]if(max-min == j-i)

} }cout

}

藍橋杯 連號區間數

問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...

藍橋杯 連號區間數

問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...

藍橋杯 連號區間數

峰值記憶體消耗 64m cpu消耗 5000ms 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間...