其他分享
首页 > 其他分享> > 11.29打卡

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