讨论24点算法。

24点是扑克牌游戏 玩法是:从一副扑克的A到10里随意抽出4张牌

用‘加’’减‘‘乘’‘除’四个符号算出4个数是否等于24,是

的话成功,否的话失败;

我用的是穷举法!(源码有点长)

就是穷举出所有可能的算术式;

我们想设4张牌为W,X,Y,Z;

先把4张牌做排列组合:

如W;X;Y;Z; W;X;Z;Y; W;Y;X;Z;

W;Y;Z;X; W;z;x;y; w;z;y;x;

x;w;y;z; x;w;z;y; x;y;w;z;

x;y;z;w; x;z;w;y; x;z;y;w;

等等 。。。24种排列:

然后在带如算术符号

如:+ + +;+ -+;+ * *;+ * /;+ + -;

等等穷举的所有算术符号;(目前我找到的共有43种

可能不全);

下面是我编的源码;

#include"stdio.h"

int kind(int a[4],int w,int x,int y,int z,int n)

{

switch(n)

{

case 1: a[0]=w;a[1]=x;a[2]=y;a[3]=z;

case 2: a[0]=w;a[1]=x;a[2]=z;a[3]=y;

case 3: a[0]=w;a[1]=y;a[2]=x;a[3]=z;

case 4: a[0]=w;a[1]=y;a[2]=z;a[3]=x;

case 5: a[0]=w;a[1]=z;a[2]=x;a[3]=y;

case 6: a[0]=w;a[1]=z;a[2]=y;a[3]=x;

case 7: a[0]=x;a[1]=w;a[2]=y;a[3]=z;

case 8: a[0]=x;a[1]=w;a[2]=z;a[3]=y;

case 9: a[0]=x;a[1]=y;a[2]=w;a[3]=z;

case 10:a[0]=x;a[1]=y;a[2]=z;a[3]=w;

case 11:a[0]=x;a[1]=z;a[2]=w;a[3]=y;

case 12:a[0]=x;a[1]=z;a[2]=y;a[3]=z;

,。。。。。。。。。

。。。。。。。。。。。

。。。。。。。。。。。

。。。。。。。。。。。

case 24: a[0]=z;a[1]=y;a[2]=w;a[3]=x;

}

因为没办法一下返回4个数字,所以就用数组来返回

被改变的4个数字;(如有更好的办法请告之)

main()

{

int i,j,w,x,y,z,s,find=0; /w,x,y,z是4张牌s是牌的和

find 是找到标志*/

int a[4];

clrscr();

do{

printf("请输入4张牌的面值[1-10]“);

scanf("%d %d %d %d",&w,&x,&y,&z);

}while(w>=11||x>=11||y>=11||z>=11);

for(j=1;j<=43;j++)/*穷举符号的排列次数*/

{

switch(j)

{

case 1:

for(i=1;i<=24;i++)

{

kind(a,w,x,y,z,i)

s=a[0]+a[1]+a[2]+a[3];

if(s==24)

{

printf("%d+%d+%d+%d=24",a[0],a[1],a[2],a[3]);

find=1;break;

}

}break;

case 2:

for(i=1;i<=24;i++)

{

kind(a,w,x,y,z,i);

s=a[0]+a[1]+a[2]-a[3];

if(s==24)

{

printf("%d+%d+%d-%d=24",a[0],a[1],a[2],a[3]);

find=1;break;

}

}break;

case 3:

for(i=1;i<=24;i++)

{

kind(a,w,x,y,z,i);

s=a[0]+a[1]-a[2]+a[3];

if(s==24)

{

printf("%d+%d-%d+%d=24",a[0],a[1],a[2],a[3]);

find=1;break;

}

}break;

case 4:

for(i=1;i<=24;i++)

{

kind(a,w,x,y,z,i);

s=(a[0]+a[1]+a[2])*a[3];/*别忘了带括号*/

if(s==24)

{

printf("(%d+%d+%d)*%d=24",a[0],a[1],a[2],a[3]);

find=1;break;

}

}break;

case 5:

.................

.................

................

..............

...............

case 43:

for(i=1;i<=24;i++)

{

kind(a,w,x,y,z,i);

s=a[0]/a[1]a*[2]*a[3];

if(s==24)

{

printf("%d/%d*%d*%d=24",a[0],a[1],a[2],a[3]);

find=1;break;

}

}break;

}

}break;

if(find==0)

printf("组不成24“);

getch();

}

这到题我是在做同济大学题库里的排列组合是想到的

有什么更简单的方法就一起讨论讨论。。。。

[此贴子已经被作者于2004-10-19 00:13:12编辑过]

C语言给出任意4个数算24点,讨论24点算法。相关推荐

  1. Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素

    本文使用两种算法来实现,分别是二分查找法和插值查找法,发现插值查找法更好,更快地找到需要的数据. 代码如下: package com.moson.search;import java.util.Arr ...

  2. C语言 找出任意两整数之间的素数以及他们的和

    #include<stdio.h> //函数声明 int isPrime(int); int prinmeNumbers(int,int); int primeNumbers(int,in ...

  3. C语言/找出任意两整数之间的素数以及他们的和

    #include<stdio.h> //函数声明 int isPrime(int); int prinmeNumbers(int,int); int primeNumbers(int,in ...

  4. 用c语言设计一个任意20个数升序排列,编写一个用选择法对一维数组升序排序的函数,并在主函数中调用该排序函数,实现对任意20个整数的排序。...

    满意答案 jgbpz 推荐于 2016.03.19 采纳率:56%    等级:9 已帮助:964人 #include #include #include #define MAXlen 100void ...

  5. 【C语言】实现求两个数的最大公约数【四种算法】

    题目 给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20 解题思路 最大公约数:即两个数据中公共约数的最大者 求解的方式比较多,暴力穷举.辗转相除法.更相减损法.Stein算法算 ...

  6. 数组两个整数相加 c语言,作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)...

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...

  7. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任意类型对象 V 自定义异常 VI 异常相关代码 I 异常处理 1. 异常处理 : 使用 " try{}catch(){ ...

  8. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    转载自:https://blog.csdn.net/shulianghan/article/details/100002073 文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任 ...

  9. 计算任意两个数之间1出现的次数的思维过程

    1.我刚开始没有什么思路,仅仅是想到了将一个数字拆开成单个的数字,然后求一出现的次数,结果发现很难实现 2.没有思路,只能使用穷举法 穷举法c语言代码: #include <iostream&g ...

最新文章

  1. 从大厂“出逃”,今天又有三位程序员联手敲钟:市值 40 亿
  2. jQuery中的.bind()、.live()和.delegate()之间区别分析
  3. recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿
  4. IFE-16 addEventHandler跨浏览器实现事件绑定
  5. 私聊模式的设计与实现
  6. 作为利物浦大学和西浦的学生的职业机会发展平台!很重要!
  7. 产品经理懂技术=流氓会武术(zz)
  8. 目前市场上的电脑一体机从计算机种类,一体机电脑与普通电脑的区别
  9. 18. OD-反调试研究,破解反调试,编写反调试
  10. jq取第一个子元素为select_Python爬取博客的所有文章并存为带目录的word文档(实例67)...
  11. nginx配置lua脚本
  12. “今日校园” App 用户体验分析
  13. 樊登讲亲密关系_《亲密关系》
  14. Android实现本地图片、视频左右镜像翻转
  15. 学习Vue3 第二十五章(TSX)
  16. 日期偏移INTERVAL * DAY
  17. DELL服务器 R740的风扇设置
  18. 一位大学老师感染新冠期间写的年终总结:怀疑得了新冠39次,吃黄桃罐头5次…...
  19. ChatGPT版Office(Word/Excel/PPT)来了
  20. Ant Design中的表格中key的处理

热门文章

  1. 前端学习(2352):view组件的使用
  2. “约见”面试官系列之常见面试题第三十六篇之CSS常见兼容性问题及解决方案(建议收藏)
  3. 第九十九期:可以编写代码的代码:代码生成的利与弊
  4. 12.多媒体和超链接标签及其应用实例
  5. java中退订程序怎么写_如何在RxJava中的自定义Observable中获得观察者的退订操作的通知...
  6. WSL2 安装中文输入法教程 简单有效
  7. 自定义圆形倒计时Android,Android自定义View倒计时圆
  8. python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)
  9. mysql安装innodb插件
  10. 第0周作业2:博客阅读和思考