HDU 1274 展開字串

2021-08-04 11:34:33 字數 1060 閱讀 7681

**problem description

在紡織cad系統開發過程中,經常會遇到紗線排列的問題。

該問題的描述是這樣的:常用紗線的品種一般不會超過25種,所以分別可以用小寫字母表示不同的紗線,例如:abc表示三根紗線的排列;重複可以用數字和括號表示,例如:2(abc)表示abcabc;1(a)=1a表示a;2ab表示aab;如果括號前面沒有表示重複的數字出現,則就可認為是1被省略了,如:cd(abc)=cd1(abc)=cdabc;這種表示方法非常簡單緊湊,也易於理解;但是計算機卻不能理解。為了使計算機接受,就必須將簡單緊湊的表達方式展開。某acm隊接受了此項任務。現在你就是該acm隊的一員,請你把這個程式編寫完成。

已知條件:輸入的簡單緊湊表達方式的長度不超過250個字元;括號前表示重複的數不超過1000;不會出現除了數字、括號、小寫字母以外的任何其他字元;不會出現括號不配對等錯誤的情況(錯誤處理已由acm其他隊員完成了)。

input

本題有多個測試資料組,第一行輸入的就是資料組數n,接著就是n行表示式,表示式是按照前面介紹的意義書寫的。

output

輸出時含有n行,每行對應乙個輸入的表示式。

sample input

2 1(1a2b1(ab)1c)

3(ab2(4ab))

sample output

abbabc

abaaaabaaaababaaaabaaaababaaaabaaaab

解題思路:遞迴呼叫。每次記錄要重複輸出的次數,遇到小括號時從當前位置遞迴呼叫函式若干次,每次呼叫完記錄位置。

#include 

#include

#include

#include

using

namespace

std;

string s;

int n;

int fun(int cnt)//cnt一直是當前讀取字元的後一位

else

}return cnt;

}int main()

return

0;}

hdu 1274 展開字串

problem description 在紡織cad系統開發過程中,經常會遇到紗線排列的問題。該問題的描述是這樣的 常用紗線的品種一般不會超過25種,所以分別可以用小寫字母表示不同的紗線,例如 abc表示三根紗線的排列 重複可以用數字和括號表示,例如 2 abc 表示abcabc 1 a 1a表示a...

hdu1274 展開字串

在紡織cad系統開發過程中,經常會遇到紗線排列的問題。該問題的描述是這樣的 常用紗線的品種一般不會超過25種,所以分別可以用小寫字母表示不同的紗線,例如 abc表示三根紗線的排列 重複可以用數字和括號表示,例如 2 abc 表示abcabc 1 a 1a表示a 2ab表示aab 如果括號前面沒有表示...

HDU 1274(展開字串)

使用棧儲存輸入的字元,每次讀取乙個字元,分情況操作 字元為數字和左括號,直接入棧 字元為小寫字母,如果棧頂元素不是數字,直接入棧 如果棧頂元素是數字,將當前字母展開 棧 字元為右括號,將字元依次出棧並存入臨時陣列,直到棧頂元素為左括號,將左括號出棧並捨棄。如果左括號前有數字,則將其出棧 如果左括號前...