11.29打卡
作者:互联网
力扣 42
接雨水
分析,可以看成从最高次依次往下,一层一层的看,利用循环直接就能解出来
代码实现
#include<bits/stdc++.h>
using namespace std;
int a1[40000],sum=0,n;
bool b1[40000];
int mr()
{
int mx=a1[0];
for(int i=1;i<n;i++)
{
if(mx<a1[i])mx=a1[i];
}
return mx;
}
void rain(int k)
{
if(k==0)return;
memset(b1,0,sizeof(b1));
for(int i=0;i<n;i++)
{
if(k==a1[i])
{
b1[i]=1;
a1[i]--;
}
}
int s=0;
while(s!=n-1)
{
if(b1[s])
{
int x=0;
while(1)
{
if(s==n-1)
{
s--;
break;
}
s++;
if(!b1[s])
{
x++;
}
if(b1[s])
{
sum+=x;
s--;
break;
}
}
}
s++;
}
mr();
//cout<<sum<<endl;
rain(k-1);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a1[i];
int k=mr();
rain(k);
cout<<sum<<endl;
return 0;
}
```cpp
在这里插入代码片
运行截图!
周末过去了,又是新的一周!
标签:11.29,int,a1,++,b1,mr,--,打卡 来源: https://blog.csdn.net/m0_51136634/article/details/110358188