C语言给出任意4个数算24点,讨论24点算法。
讨论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点算法。相关推荐
- Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素
本文使用两种算法来实现,分别是二分查找法和插值查找法,发现插值查找法更好,更快地找到需要的数据. 代码如下: package com.moson.search;import java.util.Arr ...
- C语言 找出任意两整数之间的素数以及他们的和
#include<stdio.h> //函数声明 int isPrime(int); int prinmeNumbers(int,int); int primeNumbers(int,in ...
- C语言/找出任意两整数之间的素数以及他们的和
#include<stdio.h> //函数声明 int isPrime(int); int prinmeNumbers(int,int); int primeNumbers(int,in ...
- 用c语言设计一个任意20个数升序排列,编写一个用选择法对一维数组升序排序的函数,并在主函数中调用该排序函数,实现对任意20个整数的排序。...
满意答案 jgbpz 推荐于 2016.03.19 采纳率:56% 等级:9 已帮助:964人 #include #include #include #define MAXlen 100void ...
- 【C语言】实现求两个数的最大公约数【四种算法】
题目 给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20 解题思路 最大公约数:即两个数据中公共约数的最大者 求解的方式比较多,暴力穷举.辗转相除法.更相减损法.Stein算法算 ...
- 数组两个整数相加 c语言,作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)...
题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...
- 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任意类型对象 V 自定义异常 VI 异常相关代码 I 异常处理 1. 异常处理 : 使用 " try{}catch(){ ...
- 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
转载自:https://blog.csdn.net/shulianghan/article/details/100002073 文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任 ...
- 计算任意两个数之间1出现的次数的思维过程
1.我刚开始没有什么思路,仅仅是想到了将一个数字拆开成单个的数字,然后求一出现的次数,结果发现很难实现 2.没有思路,只能使用穷举法 穷举法c语言代码: #include <iostream&g ...
最新文章
- 从大厂“出逃”,今天又有三位程序员联手敲钟:市值 40 亿
- jQuery中的.bind()、.live()和.delegate()之间区别分析
- recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿
- IFE-16 addEventHandler跨浏览器实现事件绑定
- 私聊模式的设计与实现
- 作为利物浦大学和西浦的学生的职业机会发展平台!很重要!
- 产品经理懂技术=流氓会武术(zz)
- 目前市场上的电脑一体机从计算机种类,一体机电脑与普通电脑的区别
- 18. OD-反调试研究,破解反调试,编写反调试
- jq取第一个子元素为select_Python爬取博客的所有文章并存为带目录的word文档(实例67)...
- nginx配置lua脚本
- “今日校园” App 用户体验分析
- 樊登讲亲密关系_《亲密关系》
- Android实现本地图片、视频左右镜像翻转
- 学习Vue3 第二十五章(TSX)
- 日期偏移INTERVAL * DAY
- DELL服务器 R740的风扇设置
- 一位大学老师感染新冠期间写的年终总结:怀疑得了新冠39次,吃黄桃罐头5次…...
- ChatGPT版Office(Word/Excel/PPT)来了
- Ant Design中的表格中key的处理
热门文章
- 前端学习(2352):view组件的使用
- “约见”面试官系列之常见面试题第三十六篇之CSS常见兼容性问题及解决方案(建议收藏)
- 第九十九期:可以编写代码的代码:代码生成的利与弊
- 12.多媒体和超链接标签及其应用实例
- java中退订程序怎么写_如何在RxJava中的自定义Observable中获得观察者的退订操作的通知...
- WSL2 安装中文输入法教程 简单有效
- 自定义圆形倒计时Android,Android自定义View倒计时圆
- python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)
- mysql安装innodb插件
- 第0周作业2:博客阅读和思考