求解决方法。9、10号测试点WA。
查看原帖
求解决方法。9、10号测试点WA。
422129
janesfei楼主2023/7/10 16:56

已经用了两种方法写了。

每种方法都是9、10号测试点WA。


求解决方法。

方法一:

#include <bits/stdc++.h>
using namespace std;
int days=0;
void dfs(int d[],int L,int R,bool flag){
    if (flag) {
        int l=0,r=0,count=0;
        bool flag2=false;
        for (int i = 0; i < R; ++i) {
            if (d[i]!=0&&!flag2) {
                l=i;
                flag2=true;
            }
            if (d[i]==0&&flag2) {
                r=i;
                dfs(d,l,r, false);
                flag2=false;
            }
        }
        if (l==0&&r==0) {
            return;
        }
    }
    while (!flag) {
        for (int i = L; i < R; ++i) {
            d[i]--;
            if (d[i] == 0) {
                flag = true;
            }
        }
        days++;
    }
    if (flag) {
        int l=0,r=0,count=0;
        bool flag2=false;
        for (int i = L; i < R; ++i) {
            if (d[i]!=0&&!flag2) {
                l=i;
                flag2=true;
            }
            if (d[i]==0&&flag2) {
                r=i;
                dfs(d,l,r, false);
                l=0;r=0;
                flag2=false;
            }
        }
        if (l!=0){
            dfs(d,l,R, false);
        }
    }
}
int main(){
    int n,d[20000]={0};
    bool flag=false;
    cin>>n;
    if (n==0){
        cout<<0;
        return 0;
    }
    for(int i=0;i<n;i++){
        cin>>d[i];
        if(d[i]==0){
            flag=true;
        }
    }
    dfs(d,0,n,flag);
    cout<<days;
    return 0;
}

方法二:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int days=0;
    int n,d[20000]={0};
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>d[i];
    }
    int count=0;
    do{
        count=0;
        bool flag= true;
    for(int i=0;i<n;i++){
        if (d[i]!=0){
            count++;
        }
        if(d[i]!=0){
            if (i==n-1&&d[i]!=0) {
                days++;
            }
            d[i]--;
            flag=true;
        }else if(flag&&count>0){
            days++;
            flag=false;
        }
    }
    } while (count>0);
    cout<<days;
    return 0;
}
2023/7/10 16:56
加载中...