莫得思路,先捞五十分
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
#include<map>
using namespace std;
bool judge(char b[])
{//如果只有加减
for(int i=0;i<3;i++)
{
if(b[i]=='+'||b[i]=='-')
{
}
else
return false;
}
return true;
}
int calculate(int a,int b,char c)
{
switch(c)
{
case '+':
return a+b;
break;
case '-':
return a-b;
break;
case 'x':
return a*b;
break;
case '/':
return a/b;
break;
default:
break;
}
}
int main()
{
//cout<<int('0')<<endl;
int n;
cin>>n;
string s;
int num[4];
char opt[3];
int ans=0;
while(n--)
{
cin>>s;
for(int i=0;i<s.size();i++)
{//分离
if(i%2==0)
{
num[i/2]=(int)s[i]-48;
}
else
{
opt[i/2]=s[i];
}
}
if (judge(opt))
{
ans=calculate(calculate((calculate(num[0],num[1],opt[0])),num[2],opt[1]),num[3],opt[2]);
}
if(ans==24)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
还是没思路咋办?暴力分类,再补补上面的程序
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
#include<map>
using namespace std;
bool judge(char b[])
{//如果只有加减
for(int i=0;i<3;i++)
{
if(b[i]=='+'||b[i]=='-')
{
}
else
return false;
}
return true;
}
int calculate(int a,int b,char c)
{
switch(c)
{
case '+':
return a+b;
break;
case '-':
return a-b;
break;
case 'x':
return a*b;
break;
case '/':
return a/b;
break;
default:
break;
}
}
int main()
{
//cout<<int('0')<<endl;
int n;
cin>>n;
string s;
int num[4];
char opt[3];
int ans=0;
while(n--)
{
cin>>s;
for(int i=0;i<s.size();i++)
{//分离
if(i%2==0)
{
num[i/2]=(int)s[i]-48;
}
else
{
opt[i/2]=s[i];
}
}
if (judge(opt))
{
ans=calculate(calculate((calculate(num[0],num[1],opt[0])),num[2],opt[1]),num[3],opt[2]);
}
else
{
if(opt[0]=='x'||opt[0]=='/')
{
ans=calculate(num[0],num[1],opt[0]);
if (opt[1]=='x'||opt[1]=='/')
{
ans=calculate(calculate(ans,num[2],opt[1]),num[3],opt[2]);
}
else
{
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(ans,calculate(num[2],num[3],opt[2]),opt[1]);
}
else
ans=calculate(calculate(ans,num[2],opt[1]),num[3],opt[2]);
}
}
else
{
if (opt[1]=='x'||opt[1]=='/')
{
ans=calculate(num[1],num[2],opt[1]);
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(num[0],calculate(ans,num[3],opt[2]),opt[0]);
}
else//所有的式子都是这种格式?错一个,50分num[2]
ans=calculate(calculate(num[0],ans,opt[0]),num[3],opt[2]);
}
else
{
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(calculate(num[0],num[1],opt[0]),calculate(num[2],num[3],opt[2]),opt[1]);
}
else
{
ans=calculate(calculate((calculate(num[0],num[1],opt[0])),num[2],opt[1]),num[3],opt[2]);
}
}
}
}
if(ans==24)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
不过很容易出错,一不小心错了就自闭了,是我没错了。
好了,这样就过了,那再修整一下最终程序吧。
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
#include<map>
using namespace std;
int calculate(int a,int b,char c)
{
switch(c)
{
case '+':
return a+b;
break;
case '-':
return a-b;
break;
case 'x':
return a*b;
break;
case '/':
return a/b;
break;
default:
break;
}
}
int main()
{
//cout<<int('0')<<endl;
int n;
cin>>n;
string s;
int num[4];
char opt[3];
int ans=0;
while(n--)
{
cin>>s;
for(int i=0;i<s.size();i++)
{//分离
if(i%2==0)
{
num[i/2]=(int)s[i]-48;
}
else
{
opt[i/2]=s[i];
}
}
if(opt[0]=='x'||opt[0]=='/')
{
ans=calculate(num[0],num[1],opt[0]);
if (opt[1]=='x'||opt[1]=='/')
{
ans=calculate(calculate(ans,num[2],opt[1]),num[3],opt[2]);
}
else
{
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(ans,calculate(num[2],num[3],opt[2]),opt[1]);
}
else
ans=calculate(calculate(ans,num[2],opt[1]),num[3],opt[2]);
}
}
else
{
if (opt[1]=='x'||opt[1]=='/')
{
ans=calculate(num[1],num[2],opt[1]);
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(num[0],calculate(ans,num[3],opt[2]),opt[0]);
}
else//所有的式子都是这种格式?错一个,50分num[2]
ans=calculate(calculate(num[0],ans,opt[0]),num[3],opt[2]);
}
else
{
if(opt[2]=='x'||opt[2]=='/')
{
ans=calculate(calculate(num[0],num[1],opt[0]),calculate(num[2],num[3],opt[2]),opt[1]);
}
else
{
ans=calculate(calculate((calculate(num[0],num[1],opt[0])),num[2],opt[1]),num[3],opt[2]);
}
}
}
if(ans==24)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
唉,暴力解决一切。