CSP201903-2二十四点

 

 

 

 

 如图所示先处理乘号和除号,再处理加减。

#include<bits/stdc++.h>
using namespace std;
bool res[101];
int main(){ int n; cin>>n; int i,j,op1,op2; string inp; char op[3]; int nn[4]; int sum,nnum=0; int opnum=0; int nns[4]; char ops[3]; for(i=0;i<n;i++){ cin>>inp; sum=0; nnum=0; opnum=0; nn[0]=inp[0]-'0'; nn[1]=inp[2]-'0'; nn[2]=inp[4]-'0'; nn[3]=inp[6]-'0'; op[0]=inp[1]; op[1]=inp[3]; op[2]=inp[5]; j=0; while(j<4){ nns[nnum++]=nn[j]; if(opnum>0&&(ops[opnum-1]=='x'||ops[opnum-1]=='/')){ op1=nns[nnum-2]; op2=nns[nnum-1]; nnum-=2; if(ops[opnum-1]=='x'){ nns[nnum++]=op1*op2; }else{ nns[nnum++]=op1/op2; } opnum--; } if(j!=3){ ops[opnum++]=op[j]; } j++; } /* for(j=0;j<opnum;j++){ cout<<nns[j]<<ops[j]; } cout<<nns[opnum]<<endl; */ sum=nns[0]; for(j=0;j<opnum;j++){ if(ops[j]=='+'){ sum+=nns[j+1]; }else{ sum-=nns[j+1]; } } // cout<<sum<<endl; res[i]=(sum==24); } for(i=0;i<n;i++){ if(res[i]){ cout<<"Yes\n"; }else{ cout<<"No\n"; } } }
posted @ 2019-12-27 23:11  vdk  阅读(517)  评论(0编辑  收藏  举报