Problem : 美丽黄山II

Problem : 美丽黄山II

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 3060  Solved: 489

Description

 这一天,快码佳编四兄弟姐妹又来到了黄山,好开心,好好玩!

 众所周知,黄山市一片山(而不是一座山)。假设这些山排成了一排,每座山有各自的高度。现在游客们从最右边看山,有些山因为高度没有它右边的某座山高,就会被遮住,游客们就无法看到。现在请告诉游客,他能看到几座山(看到山顶即可被认为看到了,如果恰好山顶被遮住了,这座山也不算被看到)

Input

  第1行1个正整数n,表示有N座山 
第2行N个正整数,依次表示从左到右每座山的高度,每2个数之间用一个空格隔开

Output

  一行一个正整数,表示从右端看,能看到多少座山

Sample Input

5
3 7 7 2 8

Sample Output

1

HINT

 

N<=100000



这题好像是18年期末考改编?期末考似乎是从左往右看。核心思路在于:从右边往左边看,如果这个数比前一个数小,那么这个数变成更大的那个数,再去和前面的数比较,同时count++;最后输出count就行了。另外注意HINT数组是要开大的,不然交上去就是数组越界。


#include<stdio.h>
#include<string.h>
int a[200000];
int main(void)
{
    int n,i,j;
    while(scanf("%d",&n)!=EOF)
    {
        memset(a,0,sizeof(a));
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        int count=1;j=n-1;
        for(i=n-1;i>=0;i--)
        {
            if(a[j]<a[i])
            {
                count++;a[j]=a[i];
            }
        }
        printf("%d\n",count);
    }
    return 0;
}


版权声明:本文为zstuyyyyccccbbbb原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。