题解

木板接水

http://www.nowcoder.com/questionTerminal/dee0bcab26a648ad9999bc891d460034

跟leetcode第42题接雨水相同。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
 
 
int main()
{
    int T;
    int a,b,c,n;
    int sum,max=0,maxIndex;
    int *data=(int*)malloc(sizeof(int)*1e5);
    int start;
    while(scanf("%d",&T)!=EOF)
    {
         
        for(int i=0;i<T;i++)
        {
            sum=0;
            max=0;
            maxIndex=0;
            scanf("%d",&n);
            for(int j=0;j<n;j++)
            {
                scanf("%d",&data[j]);
                if(max<data[j])
                {
                    max=data[j];
                    maxIndex=j;
                }
            }
            a=data[0];
            start=0;
            for(int j=1;j<=maxIndex;j++)
            {
                if(data[j]>=a)
                {
                    sum+=a*(j-start);
                    a=data[j];
                    start=j;
                }              
            }
            a=data[n-1];
            start=n-1;
            for(int j=n-2;j>=maxIndex;j--)
            {
                if(data[j]>=a)
                {
                    sum+=a*(start-j);
                    a=data[j];
                    start=j;
                }
            }
            printf("%d\n",sum);
        }
    }
    return 0;
}


全部评论

相关推荐

05-22 17:07
已编辑
门头沟学院 Java
程序员牛肉:都啥时候了还jb打蓝桥杯呢,有限找实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务