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

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 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义