Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
124742 黄戈 快算24点 C++ 解答错误 10 0 MS 248 KB 1509 2024-01-23 15:35:48

Tests(1/10):


#include<bits/stdc++.h> using namespace std; char a[]="+-*/"; stack<int> s,ans; int que[9],c[5],u[5]; inline bool f(int top){ if(top==8){ if(s.top()==24){ for(int i=1,c1=0,c2=0;i<=7;i++){ if(que[i]<=4) ans.push(c[que[i]]); else { c1=ans.top(); ans.pop(); c2=ans.top(); ans.pop(); if(i&1 && c1<=c2) cout<<c1<<a[que[i]-5]<<c2; if(que[i]==5) ans.push(c1+c2),cout<<c1<<"+"<<c2<<"="<<c1+c2<<endl<<endl; if(que[i]==6) ans.push(c1-c2),cout<<c1<<"-"<<c2<<"="<<c1-c2<<endl<<endl; if(que[i]==7) ans.push(c1*c2),cout<<c1<<"*"<<c2<<"="<<c1*c2<<endl<<endl; if(que[i]==8) ans.push(c1/c2),cout<<c1<<"/"<<c2<<"="<<c1/c2<<endl<<endl; } } return true; } return false; } for(int i=1,c1=0,c2=0;i<=8;i++) if((i<=4 && !u[i]) || (i>=5 && s.size()>=2)){ if(i<=4){ s.push(c[i]); u[i]=true; } else { c1=s.top(); s.pop(); c2=s.top(); s.pop(); if((!c2 || (c2 && c1%c2!=0)) && i==8){ s.push(c2); s.push(c1); continue; } if(i==5) s.push(c1+c2); if(i==6) s.push(c1-c2); if(i==7) s.push(c1*c2); if(i==8) s.push(c1/c2); } que[top]=i; if(f(top+1)) return true; que[top]=0; s.pop(); if(i>=5){ s.push(c2); s.push(c1); } else u[i]=false; } return false; } int main(){ for(int i=1;i<=4;i++){ cin>>c[i]; } if(!f(1)){ cout<<"No"; } return 0; }


测评信息: