问题如下:
计算24是流行的扑克游戏。其方法是任意取出4张牌,A J Q K 王牌算 1,其它牌按点数计算,花色不计。目标是通过加、减、乘、除和括号最终算出24。设计一个程序,输入4个数字(1~10),则列出所有可能计算结果为24的方案。要求:
方案不能重复(加法乘法交换律等算不同方案)。
计算中局部可以为分数,结果为整数即可(如 3 3 7 7 算法: (3 + 3/7)*7)
如果没有找到方案输出:无解。
#include"stdio.h"
#include"math.h"
float num[4][4]; //num[][]存储已经尝试过的的数
char fu[4]; //fu[]存储满足条件的符号
int jishu[4];//jishu[i]记录第i个尝试的符号, 0为‘+’,1为‘-’,2为‘*’,3为‘/ ’
int pan_duan; //标记是否有算24的方案,有的话将其赋值1
float suan(float a, float b, int n) //对a,b进行运算,n存放符号编号
{
if(jishu[n] == 0)
{
fu[n] = '+'; //将尝试的符号存储起来
return a+b;
}
else if(jishu[n] == 1)
{
fu[n] = '-';
return a-b;
}
else if(jishu[n] == 2)
{
fu[n] = '*';
return a*b;