蓝桥杯模拟题——递增三角形

    科技2022-07-11  101

    【问题描述】 <br>在数列 a[1], a[2], ..., a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a[i], a[j], a[k] 为一组递增三元组,a[j]为递增三元组的中心。 <br>给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。 <br>【输入格式】 <br>输入的第一行包含一个整数 n。 <br>第二行包含 n 个整数 a[1], a[2], ..., a[n],相邻的整数间用空格分隔,表示给定的数列。 <br>【输出格式】 <br>输出一行包含一个整数,表示答案。 <br>【样例输入】 <br>5 <br>1 2 5 3 5 <br>【样例输出】 <br>2 <br>【样例说明】 <br>a[2] 和 a[4] 可能是三元组的中心。 <br>【评测用例规模与约定】 <br>对于 50% 的评测用例,2<= n<= 100,0<= 数列中的数<= 1000。 <br>对于所有评测用例,2<= n<= 1000,0 <= 数列中的数<= 10000。

    c代码

    #include <stdio.h> #include <stdlib.h>

    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    int main() {     int n,i,a[1001],flag1,flag2,sum=0;     scanf("%d",&n);     for(i=1;i<=n;i++)     scanf("%d",&a[i]);     for(i=2;i<n;i++)     {         flag1=0;flag2=0;         int s=i,e=i;         int k=a[i];         for(s--;s>0;s--)         {             if(a[s]<k)             {                 flag1=1;                 break;             }         }         for(e++;e<=n;e++)         {             if(a[e]>k)                          {                 flag2=1;                 break;             }         }         if((flag1==1)&&(flag2==1))         sum++;         }     printf("%d\n",sum);     return 0; }

     

    Processed: 0.012, SQL: 8