40分 大佬求助!
查看原帖
40分 大佬求助!
738466
Error_X楼主2023/8/7 10:35

#2 3 5 7 8 10 的点全WA了,代码如下

#include <bits/stdc++.h>
using namespace std;
string init;
int len,t,ct,ri,tail;
void f(string &s,int i){
    if(i==len) return ;//用完走人
    if(s[i]=='['){//找到需要压缩的信息
        string cath,res;ct=s[i+1]-'0';
        //记录压缩的信息 cath 
        for(int p=i+2;true;p++){
            if(s[p]=='[') f(s,p);
            else if(s[p]==']'){tail=p;break;}
            cath+=s[p];
        }
        //1. 删除之前的
       s.erase(i,tail-i+1);
       //2. 解压信息 
        for(int j=1;j<=ct;j++) res+=cath;
       //3. 插入解压后缩后的信息
        s.insert(i,res);
        return ;
    }
    //如果不用压缩,递归回去
    f(s,i+1);
}
int main()
{
    // freopen("input.in","r",stdin);
    // freopen("output.out","w",stdout);
    cin>>init;
    len=init.size();
    f(init,0);
    cout<<init;
    return 0;
}

思路用的是递归拆解,先找出需要拆解的字符串然后在用cath保存压缩的字符串,删除后,再循环插入回去

有大佬能帮一下吗?

2023/8/7 10:35
加载中...