24点游戏c语言,4个数组合计算得出的所有公式。

我想要达到的结果

输入4个整数假设abcd 通过加减乘除得出24的所有式子。重要的是无论是abcd 还是bcda这样的调换数字顺序的式子也要一并得出结果

望采纳

#include "stdio.h"
#include "stdlib.h"
char op[5]= {
    '#','+','-','*','/',
}
;
float cal(float x,float y,int op) {
    switch(op) {
        case 1:return x+y;
        case 2:return x-y;
        case 3: return x*y;
        case 4: return x/y;
    }
}
float calculate_model1(float i,float j,float k,float t,int op1,int op2,int op3) {
    float r1,r2,r3;
    r1 = cal(i,j,op1);
    r2 = cal(r1,k,op2);
    r3 = cal(r2,t,op3);
    return r3;
}
float calculate_model2(float i,float j,float k,float t,int op1,int op2,int op3) {
    float r1,r2,r3;
    r1 = cal(j,k,op2);
    r2 = cal(i,r1,op1);
    r3 = cal(r2,t,op3);
    return r3;
}
float calculate_model3(float i,float j,float k,float t,int op1,int op2,int op3) {
    float r1,r2,r3 ;
    r1 = cal(k,t,op3);
    r2 = cal(j,r1,op2);
    r3 = cal(i,r2,op1);
    return r3;
}
float calculate_model4(float i,float j,float k,float t,int op1,int op2,int op3) {
    float r1,r2,r3;
    r1 = cal(j,k,op2);
    r2 = cal(r1,t,op3);
    r3 = cal(i,r2,op1);
    return r3;
}
float calculate_model5(float i,float j,float k,float t,int op1,int op2,int op3) {
    float r1,r2,r3 ;
    r1 = cal(i,j,op1);
    r2 = cal(k,t,op3);
    r3 = cal(r1,r2,op2);
    return r3;
}
int get24(int i,int j,int k,int t) {
    int op1,op2,op3;
    int flag=0;
    for (op1=1;op1<=4;op1++)
     for (op2=1;op2<=4;op2++)
      for (op3=1;op3<=4;op3++) {
        if(calculate_model1(i,j,k,t,op1,op2,op3)==24) {
            printf("((%d%c%d)%c%d)%c%d\n",i,op[op1],j,op[op2],k,op[op3],t);
            flag = 1;
            goto OUT;
        }
        if(calculate_model2(i,j,k,t,op1,op2,op3)==24) {
            printf("(%d%c(%d%c%d))%c%d\n",i,op[op1],j,op[op2],k,op[op3],t);
            flag = 1;
            goto OUT;
        }
        if(calculate_model3(i,j,k,t,op1,op2,op3)==24) {
            printf("%d%c(%d%c(%d%c%d))\n",i,op[op1],j,op[op2],k,op[op3],t);
            flag = 1;
            goto OUT;
        }
        if(calculate_model4(i,j,k,t,op1,op2,op3)==24) {
            printf("%d%c((%d%c%d)%c%d)\n",i,op[op1],j,op[op2],k,op[op3],t);
            flag = 1;
            goto OUT;
        }
        if(calculate_model5(i,j,k,t,op1,op2,op3)==24) {
            printf("(%d%c%d)%c(%d%c%d)\n",i,op[op1],j,op[op2],k,op[op3],t);
            flag = 1;
            goto OUT;
        }
    }
    OUT: return flag;
}
int main() {
    int x,y,m,n;
    int i,j,k,t;
    int in[4];
    int flag;
    for (i=0;i<4;i++)
     scanf("%d",&in[i]);
    for (i=0;i<4;i++) {
        for (j=0;j<4;j++) {
            if(j==i) continue;
            for (k=0;k<4;k++) {
                if(i==k||j==k) continue;
                for (t=0;t<4;t++) {
                    if(t==i||t==j||t==k) continue;
                    x = in[i];
                    y = in[j];
                    m = in[k];
                    n = in[t];
                    flag = get24(x,y,m,n);
                    if(flag ==1) goto END;
                }
            }
        }
    }
    if(flag == 0)
     printf("-1\n");
    END: // system("pause");
    return 0;
}