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 ...