Document

//使用数组:分为数字数组和运算符数组,遍历所有运算符,先处理两个优先级高的运算符———乘和除,然后再处理加和减
//【注意】搜索乘除时,检索运算符只需三次,t来指示当前检索的运算符,加减时才进行++

#include<iostream> using namespace std; int main() { int n; cin>>n; int num[4]; char sign[3]; int sum; int ns; int nn; for(int i=0;i<n;i++)//n个样例 { ns=3; nn=4; for(int j=0;j<7;j++)//分配到两个数组 { if(j%2==0)cin>>num[j/2]; else cin>>sign[(j-1)/2]; } int t=0; for(int i=0;i<3;i++)//三个运算符->检索三次 { if(sign[t]=='x') { //符号删除并前移 数字计算并前移 for(int j=t;j<ns-1;j++) { sign[j]=sign[j+1]; } num[t]=num[t]*num[t+1]; for(int j=t+1;j<nn-1;j++) { num[j]=num[j+1]; } ns--; nn--; } else if(sign[t]=='/') { for(int j=t;j<ns-1;j++) { sign[j]=sign[j+1]; } num[t]=num[t]/num[t+1]; for(int j=t+1;j<nn-1;j++) { num[j]=num[j+1]; } ns--; nn--; } else//运算符为+或-,跳到下一个 { t++; } } sum=num[0]; for(int i=0;i<ns;i++) { if(sign[i]=='+') { sum+=num[i+1]; } else if(sign[i]=='-') { sum-=num[i+1]; } } if(sum==24)cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
     }
}
原文地址:https://www.cnblogs.com/precious112/p/13735652.html