在紡織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
2sample output1(1a2b1(ab)1c)
3(ab2(4ab))
abbabcsponsorabaaaabaaaababaaaabaaaababaaaabaaaab
#include#include#include char a[500];
int n;
int dfs(int h)
i=l;
} if(a[i]>='a'&&a[i]<='z')
}if(a[i]==')')
return i;
}int main()
return 0;
}
題意 按照題目要求輸出相應的字母
思路 1判斷第乙個為數字還是字母:如果是字母,直接存入。
2當第乙個為數字時要判斷數字為幾位數,所以要小心,然後找到第乙個前括號(再找到與之對應的那乙個後括號),把這 個進行多次存入,再存入的過程中判斷其中是不是還存在數字和括號,如果有,繼續迴圈,直到全部寫完就可以了。
五一訓練包 水題
g 7水題題解 題意為找出存在於 陣列中的 陣列,陣列比 陣列多兩個數,乙個數為 陣列的和,另乙個數為無關的數。我的思路一開始侷限了,所以正確思路應該是將 陣列先求和 記得注意數字範圍 然後排序。排序之後能找到兩個較大值,就又兩種判斷,第一種,用和減去最大值,如果剛好等於倒數第二個數的兩倍,那 陣列...
五一訓練包 水題
c 3 水題題解 題意為判斷所給的數列能不能由題中所給要求交換陣列,使之成為乙個遞增的數列 題目所給要求是 當存在不滿足非遞減的兩個陣列元素時,如果這兩個元素的最大公約數等於陣列中的最小元素,就可以交換,如果最後交換出來的陣列滿足非遞減就輸出yes否則輸出no。題意挺好理解,關鍵是 怎麼做,輸入時可...
ayit第十五周訓練題題i題
you are given two integers nandk,your task is to find the most significant three digits,and least significant three digits ofnk.input input starts wit...