m0_75082407 2022-11-25 12:13 采纳率: 100%
浏览 43
已结题

C语言蓄水量的计算问题

作为一个C语言初学者,语言逻辑能力不算好,在这方面确实很吃亏,在本题上就很体现。
看到问题也是有点晕的,想了半小时才来了解题思路,但又被表达难倒了,想请大家带带。感谢!
(思路大概是计算左右两边的柱子高度再比较当前柱子的高度得出蓄水量,大概吧?有点像木桶问题。)
大概意思是这样吧(不是还请纠正)

img

问题描述

img


题目给定的函数

img

img


最后是测试集

img

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-11-25 12:37
    关注

    没看懂,二维空间还能储水,好神奇
    柱子之间存多少水,但也没说柱子之间的距离有多少,输入的2 1 2是柱子的高度?

    #include <stdio.h>
    long long a[1000],l[1000],r[1000];
    
    long long leftmax(int n)
    {
        long long max = a[0];
        for(int i=1;i<=n;i++)
        {
            if(max < a[i])
                max = a[i];
        }
        return max;
    }
    
    long long rightmax(int n,int r)
    {
        long long max = a[n];
        for(int i=n+1;i<=r;i++)
        {
            if(max < a[i])
                max = a[i];
        }
        return max;
    }
    
    long long less(long long a,long long b)
    {
        if(a<b)
            return a;
        return b;
    }
    int main()
    {
        int n,i;
        long long high = 0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%lld",&a[i]);
        if(n<=2)
            printf("0\n");
        for(i=1;i<n-1;i++)
        {
            l[i] = leftmax(i);
            r[i] = rightmax(i,n-1);
        }
        for(i=1;i<n-1;i++)
            high += less(l[i],r[i])-a[i];
        printf("%lld",high);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月26日
  • 已采纳回答 11月25日
  • 修改了问题 11月25日
  • 赞助了问题酬金15元 11月25日
  • 展开全部

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?