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 8Sample Output
1HINT
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;
}