xtu1038括號編碼 棧

2021-07-10 05:39:54 字數 1193 閱讀 3211

description

s = s1 s2…s2n 是乙個符合格式的括號的字串,s能按下面兩種方式編碼:

p編碼:編碼是乙個整數序列p = p1 p2…pn,pi是第i個右括號之前的左括號的數目。

w編碼:編碼是乙個整數序列w= p1 p2…pn,wi是第i個右括號的編碼值,它等於這個右括號到與之匹配的左括號之間的右括號的數目(包括它自己)。

比如:

請寫乙個程式將p序列轉換成w序列。

輸入:第一行是乙個整數k,表示有多少個測試用例,以後每兩行乙個測試用例。每個測試用例第一行為乙個整數n(1 <= n <= 20),表示p序列長度,每個測試用例第二行n個非負整數,每個整數之間有乙個空格分隔。

輸出:每行輸出乙個測試用例的結果。每行包括n個整數,每個整數之間用乙個空格分隔。

sample input

2 6

4 5 6 6 6 6

9 4 6 6 6 6 8 9 9 9

sample output

1 1 1 4 5 6

1 1 2 4 5 1 1 3 9

source

程式設計實踐

思路:首先告訴了當前右括號前邊的左括號數,去找這個右括號與右括號匹配的那個左括號之間的右括號數包括自己,我的思路是用棧。

首先:((()))與(()())這兩個來看最後的那個右括號與第乙個括號匹配,,之間包括自己都有3個括號。

所以當有()匹配是可以用#來代替整個括號。

當給出乙個右括號是找到與之匹配的左括號,之間的#的數目+本身就是答案。。

#include

#include

#include

using

namespace

std;

int main()

p.pop();

p.push('#');

if(i==k) printf("%d\n",cnt);

else

printf("%d ",cnt);

//printf("%d ",cnt);

while(st.empty()!=true)

}//printf("\n");

}return

0;}

XTU 迴圈3 素數

對於大於1的自然數,如果n為素數,那麼所有大於1且不大於n的平方根的自然數都不能整除n,反之亦然。所以我們可以通過測試來確定n是否為素數。現在給出n,要你求是否為素數,是輸出yes,否則輸出no 每行乙個正整數n,n 2 32 1,如果n為0,則輸入結束。判斷n是否為素數 每行輸出乙個用例的結果,如...

XTU1256 湘潭大學

題目描述 湘潭大學簡稱 xtu 作為即將成為湘大的乙份子,怎麼不能為湘大添磚加瓦了?現在給你乙個字串,請你計算一下,從中選取字元,最多能組成多少個 xtu 輸入 第一行是乙個整數k,表示樣例的個數。以後每行乙個字串,字串只包含英文大寫字母,長度不會超過1000。輸出 每行輸出乙個樣例的結果。樣例輸入...

XTU1262 優先佇列

使用優先佇列模擬一下就可以了,但是需要注意進行優化,題目有b 0的情況,也就是說無論如何撈魚都不會變,這種情況需要直接優化掉,不能進行模擬,否則會超時。include define ll long long define up i,l,h for int i l i define down i,h,...