作业帮 > 数学 > 作业

c 输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息.

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/13 14:26:00
c 输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息.
输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息.
我的解法是把这个问题分解成了两个子问题,首先求出4个数字的无重复全排列,放到一个数组里面,再对没一个排列情况,从头到尾穷举所有的四则运算情况.注意到除法是特殊的,我用x/y表示x除以y,用x|y表示x分之y.注意到,如果穷举的解得到-24的话,只需要把有减法的地方调换一下顺序就可以了,代码如下
//
#include
#include
#include
#include
int index[4]={0,1,2,3};//used to generate subscription collection
int sub[4]; //used in p() only
float f[4]={8.0f,3.0f,3.0f,8.0f};//the 24 point numbers
float fs[24][4];//all possible permutaions of f
float tmp[4]; //used for buf
int g_number=0; //number of permutations
float RES[4];
char op[3];
void p(int idx){//求全排列的函数
if(idx==4){
for(int i=0;i