中綴式變字尾式 nyoj 467

2021-06-20 23:20:14 字數 1136 閱讀 3447

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

輸入第一行輸入乙個整數n,共有n組測試資料(n<10)。

每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以「=」結束。這個表示式裡只包含+-*/與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入的運算元中不會出現負數。

資料保證除數不會為0

輸出每組都輸出該組中綴式相應的字尾式,要求相鄰的運算元操作符用空格隔開。

樣例輸入

2

1.000+2/4=

((1+2)*5+1)/4=

樣例輸出

1.000 2 4 / + =

1 2 + 5 * 1 + 4 / =

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

char a[1010], b[1010];

int k = 0;

stacks;

int first(char ch)}/*

得到乙個操作符或者運算元。

如果是運算元就輸入到陣列,

如果是'('壓棧,

如果是')' 棧頂出棧直到棧頂為'(',然後將'('也彈出

如果是運算子,優先順序大於棧頂元素,壓棧

優先順序小於棧頂元素,出棧,並將出棧的元素輸入到陣列,並將此運算子壓棧

輸入結束,就將棧裡的元素全部出棧輸入到陣列,直到棧空。

*/void change()

b[k ++] = ' ';

} else if(a[i] == '(')

else if(a[i] == ')')

s.pop();

i++;

} else

s.push(a[i]);

i++;

} }char t = s.top();

while(t != '#')

b[k ++] = '=';

b[k ++] = '\0';

}int main (void)

return 0;

}

NYOJ467中綴式變字尾式

輸入 第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入的運算元中不會出現負數。資料保證除數不會為0 輸出每組都輸出該組中...

NYOJ 467 中綴式變字尾式

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證...

NYOJ467中綴式變字尾式

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 輸入 第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保...