首页 > 猿辅导笔试编程题二
头像
青fu
发布于 2021-08-01 11:40
+ 关注

猿辅导笔试编程题二

1.叠箱子问题——倒序+栈,不知道对不对。

#include <stack>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
    string s;
    cin>>s;
    reverse(s.begin(),s.end());
    stack<int> stk;
    int i=0,n=s.size();
    stack<int> stack;
    while(i<n){
        char c=s[i];
        if(s[i]==']'){  //倒序,故而】为左边界
            if(stk.empty()||s[i-1]=='['||s[i-1]==']'){  //保证单个纸箱子左侧也有计数值1.
                stk.push(1);
            }
            stk.push(0);
        }
        else if(c=='['){    //遇到右边界
            if(stk.top()==0){   //如果是没有套小箱子,则直接出左边界0。
                stk.pop();
            }
            else{               //如果套了小箱子,则统计内部箱子数目,取k=1保证后续将自身计算进去。
                int k=1;
                while(!stk.empty()&&stk.top()!=0){
                    k+=stk.top();
                    stk.pop();
                }
                stk.pop();
                stk.top()*=k;
            }
        }
        else{
            stk.push(c-'0');
        }
        ++i;
    }
    int res=0;
    while(!stk.empty()){
        res+=stk.top();
        stk.pop();
    }
    cout<<res<<endl;
    return 0;
}

全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐