Jcwemz 2022-12-07 22:16 采纳率: 0%
浏览 16

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

我想要达到的结果

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

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-07 22:45
    关注

    望采纳

    #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;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月7日