1. 程式人生 > >藍橋杯——連號區間數(暴力)

藍橋杯——連號區間數(暴力)

題目:http://lx.lanqiao.cn/problem.page?gpid=T30

分析:注意到輸入格式裡介紹“第二行是N個不同的數字Pi(1 <= Pi <= N)”,這裡就可以知道第二行的數由1,2,3······N-1,N組成,雖然此題不用到這個,但以後也要有這個覺悟,閱讀題目要仔細,避免題目複雜化。其實這一題,要知道[L, R]是不是連號區間,判斷max-min==R-L就可以了(max、min分別是區間[L, R]最大值和最小值)。

如: 1   2   3   4(陣列下標)

        3   2   1  4(a[i])

區間[1,3]很明顯是連號區間(遞增排序後連續),此時 max-min=3-1=2,R-L=3-1=2。


程式碼(c):

#include<stdio.h>
int main()
{
    int i,j,n,a[50005],max,min,count=0;
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=1; i<=n; i++)
    {
        max=a[i];
        min
=a[i]; for(j=i; j<=n; j++) { if(max<a[j]) max=a[j];//max、min分別永遠記錄最大值和最小值 if(min>a[j]) min=a[j]; if((max-min)==(j-i)) count++; } } printf("%d",count); return 0; }