题解 | #24点运算#
24点运算
http://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
#include<iostream>
#include <string>
#include<map>
using namespace std;
string e(string a)
{
int d=0;
for(int i=0;i<a.length();i++)
{
int s=0,t=0;
string b,c;
if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
{
b=a.substr(0,i);
c=a.substr(i+1,a.length());
for(int m=0;m<b.length();m++)
{
s=s*10+b[m]-'0';
}
for(int n=0;n<c.length();n++)
{
t=t*10+c[n]-'0';
}
if(a[i]=='+')
{
d=s+t;
}
else if(a[i]=='-')
{
d=s-t;
}
else if(a[i]=='*')
{
d=s*t;
}
else if(a[i]=='/')
{
if(t!=0&&s%t==0)
{
d=s/t;
}
}
}
}
return(to_string(d));
}
pair<string, string> x(string a,string b,string c,string d)
{
map<string,string>z;
z["2"]="2",z["3"]="3",z["4"]="4",z["5"]="5",z["6"]="6",z["7"]="7",z["8"]="8",z["9"]="9",z["10"]="10",z["11"]="J";
z["12"]="Q",z["13"]="K",z["1"]="A";
int w=0;
pair<string, string> y;
char f[4]={'+','-','*','/'};
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
for(int m=0;m<4;m++)
{
int t=0;
string s,u,v;
s=e(a+f[i]+b);
u=e(s+f[j]+c);
v=e(u+f[m]+d);
for(int n=0;n<v.length();n++)
{
t=t*10+v[n]-'0';
}
if(t==24)
{
y=make_pair("true",z[a]+f[i]+z[b]+f[j]+z[c]+f[m]+z[d]);
w=1;
break;
}
}
if(w==1){break;}
}
if(w==1){break;}
}
if(w==0)
{
y=make_pair("false", "false");
}
return(y);
}
int main()
{
string a,b,c,d;
while(cin>>a>>b>>c>>d)
{
if(a=="joker"||a=="JOKER"||b=="joker"||b=="JOKER"||c=="joker"||c=="JOKER"||d=="joker"||d=="JOKER")
{
cout<<"ERROR";
continue;
}
map<string,string>z;
z["2"]="2",z["3"]="3",z["4"]="4",z["5"]="5",z["6"]="6",z["7"]="7",z["8"]="8",z["9"]="9",z["10"]="10",z["J"]="11";
z["Q"]="12",z["K"]="13",z["A"]="1";
a=z[a],b=z[b],c=z[c],d=z[d];
if(x(a,b,c,d).first=="true")
{
cout<<x(a,b,c,d).second;
}
else if(x(a,c,b,d).first=="true")
{
cout<<x(a,c,b,d).second;
}
else if(x(a,d,c,b).first=="true")
{
cout<<x(a,d,c,b).second;
}
else if(x(a,d,b,c).first=="true")
{
cout<<x(a,d,b,c).second;
}
else if(x(b,a,c,d).first=="true")
{
cout<<x(b,a,c,d).second;
}
else if(x(b,a,d,c).first=="true")
{
cout<<x(b,a,d,c).second;
}
else if(x(c,d,a,b).first=="true")
{
cout<<x(c,d,a,b).second;
}
else if(x(d,c,d,a).first=="true")
{
cout<<x(d,c,d,a).second;
}
else if(x(d,c,a,b).first=="true")
{
cout<<x(d,c,a,b).second;
}
else if(x(b,c,a,d).first=="true")
{
cout<<x(b,c,a,d).second;
}
else if(x(d,a,b,c).first=="true")
{
cout<<x(b,c,a,d).second;
}
else
{
cout<<"NONE";
}
}
return(0);
}
#include <string>
#include<map>
using namespace std;
string e(string a)
{
int d=0;
for(int i=0;i<a.length();i++)
{
int s=0,t=0;
string b,c;
if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
{
b=a.substr(0,i);
c=a.substr(i+1,a.length());
for(int m=0;m<b.length();m++)
{
s=s*10+b[m]-'0';
}
for(int n=0;n<c.length();n++)
{
t=t*10+c[n]-'0';
}
if(a[i]=='+')
{
d=s+t;
}
else if(a[i]=='-')
{
d=s-t;
}
else if(a[i]=='*')
{
d=s*t;
}
else if(a[i]=='/')
{
if(t!=0&&s%t==0)
{
d=s/t;
}
}
}
}
return(to_string(d));
}
pair<string, string> x(string a,string b,string c,string d)
{
map<string,string>z;
z["2"]="2",z["3"]="3",z["4"]="4",z["5"]="5",z["6"]="6",z["7"]="7",z["8"]="8",z["9"]="9",z["10"]="10",z["11"]="J";
z["12"]="Q",z["13"]="K",z["1"]="A";
int w=0;
pair<string, string> y;
char f[4]={'+','-','*','/'};
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
for(int m=0;m<4;m++)
{
int t=0;
string s,u,v;
s=e(a+f[i]+b);
u=e(s+f[j]+c);
v=e(u+f[m]+d);
for(int n=0;n<v.length();n++)
{
t=t*10+v[n]-'0';
}
if(t==24)
{
y=make_pair("true",z[a]+f[i]+z[b]+f[j]+z[c]+f[m]+z[d]);
w=1;
break;
}
}
if(w==1){break;}
}
if(w==1){break;}
}
if(w==0)
{
y=make_pair("false", "false");
}
return(y);
}
int main()
{
string a,b,c,d;
while(cin>>a>>b>>c>>d)
{
if(a=="joker"||a=="JOKER"||b=="joker"||b=="JOKER"||c=="joker"||c=="JOKER"||d=="joker"||d=="JOKER")
{
cout<<"ERROR";
continue;
}
map<string,string>z;
z["2"]="2",z["3"]="3",z["4"]="4",z["5"]="5",z["6"]="6",z["7"]="7",z["8"]="8",z["9"]="9",z["10"]="10",z["J"]="11";
z["Q"]="12",z["K"]="13",z["A"]="1";
a=z[a],b=z[b],c=z[c],d=z[d];
if(x(a,b,c,d).first=="true")
{
cout<<x(a,b,c,d).second;
}
else if(x(a,c,b,d).first=="true")
{
cout<<x(a,c,b,d).second;
}
else if(x(a,d,c,b).first=="true")
{
cout<<x(a,d,c,b).second;
}
else if(x(a,d,b,c).first=="true")
{
cout<<x(a,d,b,c).second;
}
else if(x(b,a,c,d).first=="true")
{
cout<<x(b,a,c,d).second;
}
else if(x(b,a,d,c).first=="true")
{
cout<<x(b,a,d,c).second;
}
else if(x(c,d,a,b).first=="true")
{
cout<<x(c,d,a,b).second;
}
else if(x(d,c,d,a).first=="true")
{
cout<<x(d,c,d,a).second;
}
else if(x(d,c,a,b).first=="true")
{
cout<<x(d,c,a,b).second;
}
else if(x(b,c,a,d).first=="true")
{
cout<<x(b,c,a,d).second;
}
else if(x(d,a,b,c).first=="true")
{
cout<<x(b,c,a,d).second;
}
else
{
cout<<"NONE";
}
}
return(0);
}