故事背景:晚上拿起扑克牌,奈何没有牌友,百度了一下有什么单人扑克游戏,然后就发现了24点,随意挑出4张牌,只用加减乘除组合成24点,我抽出了7 7 8 Q(12) ,然后思索了半天没有答案,索性即兴敲了24点答案生成程序,最后发现确实没有答案(= =)
程序效果:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int x,y,z,k;
char st[10];
int a[100],b[100],c[100],use[100];
int count()
{k=0;int ans=a[0];for(int i=0;i<3;i++){if(st[i]=='+'||st[i]=='-'){b[k++]=ans;ans=a[i+1];}if(st[i]=='*'){ans*=a[i+1];}if(st[i]=='/'){if(ans%a[i+1]==0)ans/=a[i+1];else return -1;}if(i+1==3)b[k++]=ans;}if(k==0)return ans;else{int k=1,ans=b[0];for(int i=0;i<3;i++){if(st[i]=='+'){ans+=b[k++];}if(st[i]=='-'){ans-=b[k++];}}return ans;}
}
int dfs(int u)
{int i;if(u==3){x=count();if(x==24){for( i=0;i<3;i++)cout<<a[i]<<st[i];cout<<a[i]<<"="<<24;cout<<"\n";}return 0;}st[u]='+';dfs(u+1);st[u]='-';dfs(u+1);st[u]='*';dfs(u+1);st[u]='/';dfs(u+1);
}
int dfs1(int u)
{if(u==4){dfs(0);return 0;}for(int i=0;i<4;i++){if(!use[i]){a[u]=c[i];use[i]=1;dfs1(u+1);a[u]=0;use[i]=0;} }
}
int main()
{for(int i=0;i<4;i++)cin>>c[i];dfs1(0);
}














