HDU 1274(展開字串)

2021-10-03 19:39:14 字數 847 閱讀 5308

使用棧儲存輸入的字元,每次讀取乙個字元,分情況操作:

字元為數字和左括號,直接入棧;

字元為小寫字母,如果棧頂元素不是數字,直接入棧;如果棧頂元素是數字,將當前字母展開**棧;

字元為右括號,將字元依次出棧並存入臨時陣列,直到棧頂元素為左括號,將左括號出棧並捨棄。如果左括號前有數字,則將其出棧;如果左括號前沒有數字或者棧為空,則預設數字為1。將括號中的所有字元展開後再次入棧;

字元為換行符,將棧中所有字元出棧,反向輸出。

#include #include #include #include using namespace std;

stackst;

char temp[250000]; //展開時括號中的字元

int main()

} else if (c == ')') //右括號

st.pop(); //捨棄左括號

int num; //括號前的數字

if (st.empty() || !isdigit(st.top())) //括號前沒有數字,預設為1

num = 1;

else //括號前有數字

--index;

for (int i = 0; i < num; i++) //將括號中的字母展開**棧

}else if (c == '\n') //換行符

for (int i = --index; i >= 0; i--)

cout << temp[i];

cout << endl;

if (--n == 0)

break;

} }return 0;

}

繼續加油。

hdu 1274 展開字串

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

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 如果括號前面沒有表示...