用了网上的代码来写计算24点,发现参考的那个代码只能按照输进去的数字排列进行添加符号,而不能将数字的前后顺序改变,由此导致的一些情况程序没有考虑到。于是改了一下,下面是我改后的程序,组合全排列了,但是没有筛除重复的组合。想请教一下怎么筛除重复的组合?
#include <stdio.h>
char mark[4]={
'+','-','*','/'};
float cal(float x, float y, int mark)
{
switch (mark)
{
case 0:return x+y;
case 1:return x-y;
case 2:return x*y;
case 3:return x/y;
}
}
float calculate_A(float a,float b,float c,float d,int mark1,int mark2,int mark3)
{
float r1,r2,r3;
r1=cal(a,b,mark1);
r2=cal(r1,c,mark2);
r3=cal(r2,d,mark3);
return r3;
}
float calculate_B(float a,float b,float c,float d,int mark1,int mark2,int mark3)
{
float r1,r2,r3;
r1=cal(b,c,mark2);
r2=cal(a,r1,mark1);
r3=cal(r2,d,mark3);
return r3;
}
float calculate_C(float a,float b,float c,float d,int mark1,int mark2,int mark3)
{
float r1,r2,r3;
r1=cal(c,d,mark3);
r2=cal(b,r1,mark2);
r3=cal(a,r2,mark1);
return r3;
}
float calculate_D(