【模拟】【递归】解压字符串(jzoj 1519)
生活随笔
收集整理的這篇文章主要介紹了
【模拟】【递归】解压字符串(jzoj 1519)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解壓字符串
jzoj 1519
題目大意:
有一串壓縮過的字符串,將有重復(fù)的壓縮成了s(~~)的形式(s是一位數(shù),例子:123123123壓縮成‘3(123)’),現(xiàn)在要你解壓出來(lái),然后輸出長(zhǎng)度
樣例輸入
123樣例輸出
3數(shù)據(jù)范圍限制
字符串長(zhǎng)度不超過50
提示#1:
提示#2:
50%的測(cè)試數(shù)據(jù),只有一對(duì)括號(hào),或者兩對(duì)括號(hào)。
解題思路:
用一個(gè)遞歸函數(shù)來(lái)解開括號(hào),然后一個(gè)一個(gè)解就行了
代碼:
#include<cstdio> #include<string> #include<cstring> #include<iostream> using namespace std; string str; int js(int x,int y) {int sum=0,i=x,k,s,ys;while (i<=y){if (str[i+1]!='(') sum++;//判斷是否是普通數(shù)字else{k=i;i+=2;s=1;ys=0;while (s!=ys)//尋找匹配的括號(hào){if (str[i]=='(') s++;if (str[i]==')') ys++;++i;}i--;sum+=(str[k]-48)*js(k+2,i-1);//遞歸}++i;}return sum; } int main() {cin>>str;str=' '+str;printf("%d",js(1,str.size()-1));//計(jì)算結(jié)果 }總結(jié)
以上是生活随笔為你收集整理的【模拟】【递归】解压字符串(jzoj 1519)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用 ChatGPT 等大模型训练,波士
- 下一篇: iQOO 12 手机确认搭载骁龙 8 G