记录算法小白的辛酸历程
题目描述
题目分析
这个题目的意思就是使用 3 个加减乘除运算使得 4个数字的运算结果为 24。
输入:第1行输入一个整数 n,从第 2 行开始到第 n + 1 行中,每一行包含一个长度为 7的字符串。
输出:包含 n 行,对于每一个游戏,如果其结果为 24 则输出字符串 Yes,否则输出字符串 No。
测试数据:所有测试数据中n都是100(第一个测试点都是正确的,不会做的时候,可以令所有的输出都是YES,通过第一个测试点也可以得10分的!)
错误示例
10分
暴力输出…通过测试点1只有10分
#include <iostream>
using namespace std;
int main() {
char a[100][7];
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < 100; i++)
cout << "Yes" << endl;
}
50分
int main(){
int n;
string s;
cin>>n;
queue<int> num;
queue<char> op;
while(n--){
cin>>s;
s.push_back('+');//add"+" at the end of equatation
for(int i=1;i<s.size();i+=2){
int t=s[i-1]-'0';
for(;i<s.size()&&s[i]=='x'||s[i]=='/';i+=2){
t=(s[i]=='x')?t*s[i+1]-'0':t/s[i+1]-'0';
}
num.push(t);
op.push(s[i]);
}
num.push(0);
int t=num.front();
num.pop();
while(!op.empty()){
char c=op.front();
op.pop();
t=(c=='+')?t+num.front():t-num.front();
num.pop();
}