
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a[] = { 0,1,0,2,1,0,1,3,2,1,2,1 };
int sum = 0, temp;
int max = sizeof(a) / sizeof(a[0]);
for (int i = 0;i < max - 1;i++)
{
if (a[i] > a[i + 1])
{
int n = 0;
int flag = 0;
temp = a[i];
for (int j = i + 1;j < max - 1;j++)
{
if (temp <= a[j])
{
n = j;
flag = 1;
break;
}
}
if (flag == 1)
{
for (int j = i + 1;j < n;j++)
sum += temp - a[j];
i = n - 1;
}
}
}
printf("%d\n", sum);
return 1;
}
本文介绍了一个使用C语言解决水塘接雨水问题的算法实现。通过遍历数组并寻找左右两侧最高点来计算每个位置能接住的雨水量,最终累加得到总的雨水量。该算法适用于计算机科学领域的数据结构和算法课程。
427

被折叠的 条评论
为什么被折叠?



