【模拟】【递归】解压字符串(jzoj 1519)
生活随笔
收集整理的這篇文章主要介紹了
【模拟】【递归】解压字符串(jzoj 1519)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解壓字符串
jzoj 1519
題目大意:
有一串壓縮過的字符串,將有重復的壓縮成了s(~~)的形式(s是一位數,例子:123123123壓縮成‘3(123)’),現在要你解壓出來,然后輸出長度
樣例輸入
123樣例輸出
3數據范圍限制
字符串長度不超過50
提示#1:
提示#2:
50%的測試數據,只有一對括號,或者兩對括號。
解題思路:
用一個遞歸函數來解開括號,然后一個一個解就行了
代碼:
#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++;//判斷是否是普通數字else{k=i;i+=2;s=1;ys=0;while (s!=ys)//尋找匹配的括號{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));//計算結果 }總結
以上是生活随笔為你收集整理的【模拟】【递归】解压字符串(jzoj 1519)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用 ChatGPT 等大模型训练,波士
- 下一篇: 【DP】楼梯(jzoj 1520)