C语言怎么实现扑克牌计算24点的游戏

发布时间:2021-08-11 14:36:21 作者:chen
来源:亿速云 阅读:161

本篇内容介绍了“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的算式。

源码:

//注意要在输出结果后面加\n,不然会有格式错误,坑爹啊!!!#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;}

“C语言怎么实现扑克牌计算24点的游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. C语言中如何实现纸牌24点小游戏
  2. C语言如何实现24点游戏

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:React组件的写法有哪些

下一篇:Mahout中怎么实现相似度计算

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》