算法:接雨水

JavaScript021

算法:接雨水,第1张

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 6.

思路是先看最底下一层能接多少雨水,然后再依次推断到第二层,第三层......最高层。

如果您觉得文章对你有帮助的话,不要忘了打赏我哦

如图,由题意可知,天池盆上底面半径为14寸,

下底面半径为6寸,高为18寸.

因为积水深9寸,所以水面半径为

1
2
(14+6)=10 寸.

则盆中水的体积为

1
3
π×9( 6 2 +1 0 2 +6×10)=588π (立方寸).

所以则平地降雨量等于

588π
π×1 4 2
=3 (寸).

故答案为3.

主要是条件判断if语句的编写,其他的没有什么难度,顺便附上运行后的结果

#include <stdio.h>

int main()

{

int data[8]

data[2]=3,data[4]=8,data[7]=9

int i,j,k,l,m

for (i=2i<10i++)

{

for (j=0j<10j++)

{

for (k=0k<10k++)

{

for (l=0l<10l++)

{

for (m=0m<10m++)

{

if ((i*(j*10+data[2]+k))*(i*(j*10+data[2]+k))==(data[4]*1000+l*100+m*10+data[7]))

{

data[0]=i

data[1]=j

data[3]=k

data[5]=l

data[6]=m

}

}

}

}

}

}

printf("[%d*(%d%d+%d)]^2=%d%d%d%d\n",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7])

return 0

}