C语言实现扑克牌计算24点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C 语⾔实现扑克牌计算24点

⼀副扑克牌的每张牌表⽰⼀个数(J 、Q 、K 分别表⽰11、12、13,两个司令都表⽰6)。任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为⼀个运算式。每个数只能参与⼀次运算,4个数顺序可以任意组合,4个运算符任意取3个且可以重复取。运算遵从⼀定优先级别,可加括号控制,最终使运算结果为24。请输出⼀种解决⽅案的表达式,⽤括号表⽰运算优先。如果没有⼀种解决⽅案,则输出-1表⽰⽆解。

输⼊在⼀⾏中给出4个整数,每个整数取值在[1, 13]。

输出⼀种解决⽅案的表达式,⽤括号表⽰运算优先。如果没有解决⽅案,请输出-1

四个操作数,三个操作符,两个括号,有以下五种计算模式

((A op B) op C) op D

(A op (B op C)) op D

A op (

B op (

C op D))

A op ((

B op C) op D)

(A op B) op (C op D)

将每⼀种模式写成函数,最后采⽤穷举法找到计算结果为24的算式。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16//注意要在输出结果后⾯加\n ,不然会有格式错误,坑爹啊#include "stdio.h"#include "stdlib.h" char op[5]={'#','+','-','*','/',}; float cal(float x,float y,int op){ switch(op) {

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 case1:return x+y;

case2:return x-y;

case3: return x*y;

case4: 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;

相关文档
最新文档