题解 | #24点游戏算法#
24点游戏算法
http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
#include<iostream>
#include <string>
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)
{
d=s/t;
}
}
}
}
return(to_string(d));
}
string x(string a,string b,string c,string d)
{
int w=0;
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="true";
w=1;
break;
}
}
if(w==1){break;}
}
if(w==1){break;}
}
if(w==0)
{
y="false";
}
return(y);
}
int main()
{
string a,b,c,d;
while(cin>>a>>b>>c>>d)
{
if(x(a,b,c,d)=="true")
{
cout<<"true";
}
else if(x(a,c,b,d)=="true")
{
cout<<"true";
}
else if(x(a,d,c,b)=="true")
{
cout<<"true";
}
else if(x(a,d,b,c)=="true")
{
cout<<"true";
}
else if(x(b,a,c,d)=="true")
{
cout<<"true";
}
else if(x(b,a,d,c)=="true")
{
cout<<"true";
}
else if(x(c,d,c,b)=="true")
{
cout<<"true";
}
else if(x(d,c,d,b)=="true")
{
cout<<"true";
}
else if(x(d,c,a,b)=="true")
{
cout<<"true";
}
else
{
cout<<"false";
}
}
return(0);
}
#include <string>
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)
{
d=s/t;
}
}
}
}
return(to_string(d));
}
string x(string a,string b,string c,string d)
{
int w=0;
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="true";
w=1;
break;
}
}
if(w==1){break;}
}
if(w==1){break;}
}
if(w==0)
{
y="false";
}
return(y);
}
int main()
{
string a,b,c,d;
while(cin>>a>>b>>c>>d)
{
if(x(a,b,c,d)=="true")
{
cout<<"true";
}
else if(x(a,c,b,d)=="true")
{
cout<<"true";
}
else if(x(a,d,c,b)=="true")
{
cout<<"true";
}
else if(x(a,d,b,c)=="true")
{
cout<<"true";
}
else if(x(b,a,c,d)=="true")
{
cout<<"true";
}
else if(x(b,a,d,c)=="true")
{
cout<<"true";
}
else if(x(c,d,c,b)=="true")
{
cout<<"true";
}
else if(x(d,c,d,b)=="true")
{
cout<<"true";
}
else if(x(d,c,a,b)=="true")
{
cout<<"true";
}
else
{
cout<<"false";
}
}
return(0);
}
查看6道真题和解析