1 2 二十四點 100 分

2021-10-20 02:55:14 字數 1857 閱讀 7458

2019級《ds&a課程實踐》----演算法訓練第一套題

ccf201903-2 二十四點(100分)【表示式計算】

通過本題主要掌握stack棧的基本函式及簡單使用,了解isdigit()這個函式以及三元表示式

定義每乙個遊戲由 4 個從 1-9 的數字和 3 個四則運算符組成,保證四則運算符將數字兩兩隔開,不存在括號和其他字元,運算順序按照四則運算順序進行。其中加法用符號 + 表示,減法用符號 - 表示,乘法用小寫字母 x 表示,除法用符號 / 表示。在遊戲裡除法為整除,例如 2 / 3 = 0,3 / 2 = 1, 4 / 2 = 2。 老師給了你 n 個遊戲的解,請你編寫程式驗證每個遊戲的結果是否為 24 。

輸入格式:

從標準輸入讀入資料。第一行輸入乙個整數 n,從第 2 行開始到第 n + 1 行中,每一行包含乙個長度為 7的字串,為上述的 24 點遊戲,保證資料格式合法。

輸出格式:

輸出到標準輸出。 包含 n 行,對於每乙個遊戲,如果其結果為 24 則輸出字串 yes,否則輸出字串 no。

輸入樣例:

109+

3+4x35

+4x5x57-

9-9+

85x6/

5x43+5

+7+9

1x1+9-

91x9-5/

98/5

+6x9

6x7-

3x66x4+4/

5

輸出樣例:

yes

nono

yesyes

nono

noyes

yes

原始碼

#include

#include

#include

#include

using

namespace std;

#pragma warning(disable:4996)

//用棧來存數字,遍歷字串

//遇到數字直接壓棧

//遇到x/要取出棧頂數字做運算後將結果壓棧

//遇到+-則將符號後的數字壓棧(-號壓負數)

//字串遍歷完成後,就把棧中所有數字累加到sum,判斷是否等於24即可

//pta提交時選用c++(clang++)不要選用c++(g++)

//不然有個測試點會出現執行時錯誤,是scanf的原因

//stack的常用函式:

s.pop() s.top() s.empty() s.size()

//isdigit()函式 三元表示式

intmain()

//注意是 'x' 不是 '*'

else

if(str[i]

=='x'

|| str[i]

=='/'

)else

s.push

(top);}

else

if(str[i]

=='+'

|| str[i]

=='-'

)else}}

int sum =0;

while

(!s.

empty()

)printf

("%s\n"

, sum ==24?

"yes"

:"no");

//三元表示式

}return0;

}

CCF 201903 2二十四點 (100分)

分別讀入數值與運算子方便進行計算 優先處理乘法與除法的計算,並且遵循從左至右的順序 當乘法與除法計算完畢後開始處理加減法得到最終的結果 最終結果等於24則輸出 yes 否則輸出 no 注意輸出格式以及大小寫。include include include using namespace std in...

CCF CSP刷題 二十四點

題目描述 定義每個遊戲由4個從1 9的數字和三個四則運算符組成,保證數字運算子將數字兩兩隔開,不存在括號和其他字元,運算順序按照四則運算順序進行。其中加法用符號 表示,減法用符號 表示,乘法用小寫字母 x 表示,除法用符號 表示,在遊戲裡除法為整除,例如2 3 0,3 2 1,4 2 2。輸入格式 ...

CSP練習2 201903 2 二十四點

這個題可以普通的用陣列進行求解,也可以像本文一樣採取中綴轉字尾的方式,然後再進行計算 主要注意的地方是 題目中的乘法用的是字母x,因為這個原因改了乙個晚上 不知道這樣設定為什麼。主要 如下 include include using namespace std int transform char ...