CCF小白刷题之路---201903-2 二十四点(C/C++ 100分)

一、题目描述

在这里插入图片描述
在这里插入图片描述

二、代码实现

#include<iostream>
#include<vector>
#include<string>
#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
    
    
        string str;
        cin>>str;
        //存放数字
        vector<int> num;
        //存放运算符
        vector<char> op;
        //把表达式里面的数字和运算符分开存放
        for(int j=0;j<str.length();j++)
        {
    
    
            if(str[j]>='0' && str[j]<='9') num.push_back(str[j]-'0');
            else op.push_back(str[j]);
        }
        int j = 0;
        //乘法和除法优先级最高,先处理乘法和除法
        while(j < op.size())
        {
    
    
            if(op[j]=='x')
            {
    
    
                num[j] = num[j] * num[j+1];
                //乘完之后要把多余元素删除
                //例如
                //num:9 3 4 3
                //op:+ + x
                //进行完乘法运算之后应该变成下面这样
                //num:9 3 12 (3被删除)
                //op:+ + (x被删除)
                num.erase(num.begin() + j + 1);
                op.erase(op.begin() + j);
                j = -1;
            }
            if(op[j]=='/')
            {
    
    
                num[j] = num[j] / num[j+1];
                num.erase(num.begin() + j + 1);
                op.erase(op.begin() + j);
                j = -1;
            }
            j++;
        }
        j = 0;
        //处理加法和减法
        while(j < op.size())
        {
    
    
            if(op[j]=='+')
            {
    
    
                num[j] = num[j] + num[j+1];
                num.erase(num.begin() + j + 1);
                op.erase(op.begin() + j);
                j = -1;
            }
            if(op[j]=='-')
            {
    
    
                num[j] = num[j] - num[j+1];
                num.erase(num.begin() + j + 1);
                op.erase(op.begin() + j);
                j = -1;
            }
            j++;
        }
        if(num[0]==24) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

更多CCFCSP认证真题详解,请点击>>CCFCSP历年认证考试真题解答汇总

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/113350550