CSP認證201903 2 二十四點

2021-10-06 04:14:29 字數 1171 閱讀 9632

這道題很簡單,就是乙個運算器的簡化版,只有10以內的數字,不包括括號和其他字元,字串長度為7,資料格式保證合法,幾乎所有的坑都提前規避了,作為第二道題算是很簡單的,資料範圍也很小,所以做起來就很順,我也就沒把其中的一些功能函式化,直接乙個main函式順下來的,所以可能一些**沒有那麼模組化,比較難看,唉,所以我又加了一些注釋,我怎麼這麼貼心呢?

//輸入的是運算子

else

if(c==

'/')

else

}else

//運算子是加的話直接入棧,不做處理 }}

while

(!operator.

empty()

)//此時運算子棧裡只有加,當棧清空時代表結果已經算出來了

int da;

da=data.

top();

if(da==24)

printf

("yes\n");

else

printf

("no\n");

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

}return0;

}/*109+3+4x3

5+4x5x5

7-9-9+8

5x6/5x4

3+5+7+9

1x1+9-9

1x9-5/9

8/5+6x9

6x7-3x6

6x4+4/5

*/

ccf201903 2二十四點

二十四點 使用 3 個加減乘除運算使得 4張紙牌上數字的運算結果為 24。定義每乙個遊戲由 4 個從 1 9 的數字和 3個四則運算符組成,保證四則運算符將數字兩兩隔開,不存在括號和其他字元,運算順序按照四則運算順序進行。其中加法用符號 表示,減法用符號 表示,乘法用小寫字母 x 表示,除法用符號 ...

CCF 201903 2二十四點

棧的簡單應用,中綴表示式的計算。分兩步進行 定義操作符的優先順序,用棧將中綴表示式轉為字尾表示式。再次用棧計算字尾表示式的值。注意 這裡只有加減乘除沒有括號,可以不特意定義優先順序陣列。數字是1 9,直接將數字字元轉成數字即可,不會有大於10的數字。除法是去尾整除,計算過程不會出現小數,都是整數。c...

ccf201903 2二十四點

這個題學了資料結構之後其實非常簡單。就乙個運算子棧digit,乙個操作符棧op.那麼邏輯是,如果是數字,直接進數字棧。如果是操作符 如果棧頂優先順序高於當前操作符。那麼先讓digit棧的棧頂兩元素做當前運算。然後op棧頂彈出,直到棧頂元素的優先順序小於當前的操作符,所以這裡需要加上乙個迴圈。而不是簡...