7-3 用扑克牌计算24点 (25point(s))
一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为 24。请输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出 -1 表示无解。
输入格式:
输入在一行中给出 4 个整数,每个整数取值在 [1, 13]。
输出格式:
输出任一种解决方案的表达式,用括号表示运算优先。如果没有解决方案,请输出 -1。
输入样例:
思路:分成五种优先级情况,然后将所有符号数字遍历一遍,即可成功。
#include<bits/stdc++.h>
using namespace std;
double get(double a,char c,double b)//两个数之间的运算
{
switch(c)
{
case '+':return a+b;break;
case '-':return a-b;break;
case '*':return a*b;break;
case '/':return a/b;break;
}
}
int main()
{
int i,j;
int temp=1;
int a,b,c,d,e,f;
float num[4];
char cha[4]={
'+','-','*','/'};
cin>>num[0]>>num[1]