
Lv.1
还是那个最初的自己......
签名:哥哥:Lonely_wanderer 姐姐:面具狐狸云绾兮 闺蜜(有一些改名了,找不到了):笨笨的小马、雨梦樱露、九尾红狐神樱月、哔哩哔哩、恶魔苒苒、XBD无畏的小杨小不点、一只小白鸽吖
在 算24点!真正的编程!为C党,C++党,Pascal党,Python党等喝彩! 中回复
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int a1[5];
char op[5];
bool isfinish=false;
int plus1(int a,int b){
if(a<b)return -1;
return a+b;
}
int minus1(int a,int b){
if(a<=b)return -1;
return a-b;
}
int multiply1(int a,int b){
if(a<b)return -1;
return a*b;
}
int divide1(int a,int b){
if(b==0||a%b)return -1;
return a/b;
}
int asdf(int a,int b,char o){
if(a==-1||b==-1)return -1;
else if(o=='+')return plus1(a,b);
else if(o=='-')return minus1(a,b);
else if(o=='*')return multiply1(a,b);
else if(o=='/')return divide1(a,b);
}
void print(int k){
isfinish=true;
int ans,ans2;
if(k==0){
cout<<a1[0]<<op[1]<<a1[1]<<'=';
ans=asdf(a1[0],a1[1],op[1]);
cout<<ans<<endl;
cout<<ans<<op[2]<<a1[2]<<'=';
ans=asdf(ans,a1[2],op[2]);
cout<<ans<<endl;
cout<<ans<<op[3]<<a1[3]<<'=';
ans=asdf(ans,a1[3],op[3]);
cout<<ans<<endl;
}
if(k==1){
cout<<a1[1]<<op[2]<<a1[2]<<'=';
ans=asdf(a1[1],a1[2],op[2]);
cout<<ans<<endl;
cout<<a1[0]<<op[1]<<ans<<'=';
ans=asdf(a1[0],ans,op[1]);
cout<<ans<<endl;
cout<<ans<<op[3]<<a1[3]<<'=';
ans=asdf(ans,a1[3],op[3]);
cout<<ans<<endl;
}
if(k==2){
cout<<a1[1]<<op[2]<<a1[2]<<'=';
ans=asdf(a1[1],a1[2],op[2]);
cout<<ans<<endl;
cout<<ans<<op[3]<<a1[3]<<'=';
ans=asdf(ans,a1[3],op[3]);
cout<<ans<<endl;
cout<<a1[0]<<op[1]<<ans<<'=';
ans=asdf(a1[0],ans,op[1]);
cout<<ans<<endl;
}
if(k==3){
cout<<a1[0]<<op[1]<<a1[1]<<'=';
ans=asdf(a1[0],a1[1],op[1]);
cout<<ans<<endl;
cout<<a1[2]<<op[3]<<a1[3]<<'=';
ans2=asdf(a1[2],a1[3],op[3]);
cout<<ans2<<endl;
cout<<ans<<op[2]<<ans2<<'=';
ans=asdf(ans,ans2,op[2]);
cout<<ans<<endl;
}
if(k==4){
cout<<a1[2]<<op[3]<<a1[3]<<'=';
ans=asdf(a1[2],a1[3],op[3]);
cout<<ans<<endl;
cout<<a1[1]<<op[2]<<ans<<'=';
ans=asdf(a1[1],ans,op[2]);
cout<<ans<<endl;
cout<<a1[0]<<op[1]<<ans<<'=';
ans=asdf(a1[0],ans,op[1]);
cout<<ans<<endl;
}
return;
}
void asdfasdf(int k){
int ans,ans2;
if(k==0){
ans=asdf(a1[0],a1[1],op[1]);
ans=asdf(ans,a1[2],op[2]);
ans=asdf(ans,a1[3],op[3]);
if(ans==24)print(k);
}
if(k==1){
ans=asdf(a1[1],a1[2],op[2]);
ans=asdf(a1[0],ans,op[1]);
ans=asdf(ans,a1[3],op[3]);
if(ans==24)print(k);
}
if(k==2){
ans=asdf(a1[1],a1[2],op[2]);
ans=asdf(ans,a1[3],op[3]);
ans=asdf(a1[0],ans,op[1]);
if(ans==24)print(k);
}
if(k==3){
ans=asdf(a1[0],a1[1],op[1]);
ans2=asdf(a1[2],a1[3],op[3]);
ans=asdf(ans,ans2,op[2]);
if(ans==24)print(k);
}
if(k==4){
ans=asdf(a1[2],a1[3],op[3]);
ans=asdf(a1[1],ans,op[2]);
ans=asdf(a1[0],ans,op[1]);
if(ans==24)print(k);
}
return;
}
void lined2(int sum){
if(sum==4){
for(int kk=0;kk<5;kk++){
asdfasdf(kk);
if(isfinish)return;
}
}
else{
op[sum]='+';
lined2(sum+1);
if(isfinish)return;
op[sum]='-';
lined2(sum+1);
if(isfinish)return;
op[sum]='*';
lined2(sum+1);
if(isfinish)return;
op[sum]='/';
lined2(sum+1);
if(isfinish)return;
op[sum]=' ';
}
}
void lined1(){
do{
lined2(1);
if(isfinish)return;
}while(next_permutation(a1,a1+4));
}
int main(){
for(int i=0;i<4;i++)cin>>a1[i];
sort(a1,a1+4);
lined1();
if(isfinish==false)cout<<"No answer!";
return 0;
}2020-05-07T19:19:43 点赞:0