24点数学游戏小报24点游戏哪位知道

24点数学游戏 - CSDN博客
24点数学游戏
随便输入10以内的4个数字,运算后得到结果为24.
实现方法:
新建一个windows应用程序,在窗口中创建4个Testbox控件,用于输入数字;一个button按钮,用于执行计算;一个TextBox控件用于显示组合结果的个数;一个Textbox(多行),用于显示具体的组合方法。
using System.Collections.G
using System.D
using System.D
using System.T
using System.Windows.F
using System.C
namespace _4点
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
textBox5.Text = "";
dispose(int.Parse (textBox1 .Text.ToString ()),int.Parse (textBox2 .Text .ToString ()),int .Parse (textBox3 .Text .ToString ()),int.Parse (textBox4 .Text .ToString ()) );
//sb.Remove(0,sb.Length );
textBox5 .Text = sb.ToString ();
textBox6 .Text = result .ToString ();
public StringBuilder sb = new StringBuilder ();
public int result =0;
private int[] aArray = new int[2];
private int[] bArray = new int[2];
private int[] cArray = new int[2];
private int[] dArray = new int[2];
* main方法
* @param args
//public static void main(String[] args) {
new TwentyFour().dispose(3, 3, 8, 8);
public void dispose(int a, int b, int c, int d){
aArray[0] =
aArray[1] = 1;
bArray[0] =
bArray[1] = 1;
cArray[0] =
cArray[1] = 1;
dArray[0] =
dArray[1] = 1;
core(aArray, bArray, cArray, dArray);
int[] plus(int[] a, int[] b){
if(0 == a[1]){
return new int[]{0,0};
if(0 == b[1]){
return new int[]{0,0};
int denominator = leaseCommonMultiple(a[1],b[1]);
return new int[]{denominator/a[1]*a[0] + denominator/b[1]*b[0] ,denominator};
* @param a
* @param b
int[] reduce(int[] a, int[] b){
if(0 == a[1]){
return new int[]{0,0};
if(0 == b[1]){
return new int[]{0,0};
int denominator = leaseCommonMultiple(a[1],b[1]);
return new int[]{denominator/a[1]*a[0] - denominator/b[1]*b[0] ,denominator};
* @param a
* @param b
int[] multiply(int[] a, int[] b){
return new int[]{a[0] * b[0], a[1] * b[1]};
* @param a
* @param b
int[] divide(int[] a, int[] b){
return new int[]{a[0] * b[1], a[1] * b[0]};
* 求最小公倍数
* @param a
* @param b
int leaseCommonMultiple(int a, int b){
return a*b/greatestCommonDivisor(a,b);
* 求最大公约数
* @param a
* @param b
int greatestCommonDivisor(int a, int b) {
if(0 == a && 0 == b){
if (0 == a) {
if (0 == b) {
if (a & b) {
for (int c = a % c & 0; c = a % b) {
* 动态加载符号数
* @param i
* @param a
* @param b
int[] dispose(int i, int[] a, int[] b){
if(i == 0){
return plus(a, b);
}else if(i == 1){
return reduce(a, b);
}else if(i == 2){
return multiply(a, b);
return divide(a, b);
* 动态加载计算数
* @param i
* @param a
* @param b
* @param c
* @param d
public int[] number(int i, int[] a, int[] b, int[] c, int[] d){
if(i == 0){
}else if(i == 1){
}else if(i == 2){
}else if(i == 3){
return new int[]{0,1};
* 核心算法部分
* @param a
* @param b
* @param c
* @param d
void core(int[] a, int[] b, int[] c, int[] d) {
Hashtable map = new Hashtable ();
int count = 0;
for(int i = 0; i & 4; i++){
for(int j = 0; j & 4; j++){
for(int k = 0; k & 4; k++){
for(int m = 0; m & 4; m++){
for(int n = 0; n & 4; n++){
if(n == m)
for(int o = 0; o & 4; o++){
if(o == m || o == n)
for(int p = 0; p & 4; p++){
if(p == m || p == n || p == o)
//类型1:A(A(A(a,b),c),d)
int[] result1 = dispose(k,dispose(j,dispose(i,number(m,a,b,c,d),number(n,a,b,c,d)),number(o,a,b,c,d)),number(p,a,b,c,d));
//类型2:A(A(a,A(b,c)),d)
int[] result2 = dispose(k,dispose(i,number(m,a,b,c,d),dispose(j,number(n,a,b,c,d),number(o,a,b,c,d))),number(p,a,b,c,d));
//类型3:A(a,A(b,A(c,d)))
int[] result3 = dispose(i,number(m,a,b,c,d),dispose(j,number(n,a,b,c,d),dispose(k,number(o,a,b,c,d),number(p,a,b,c,d))));
//类型4:A(a,A(A(b,c),d))
int[] result4 = dispose(i,number(m,a,b,c,d),dispose(k,dispose(j,number(n,a,b,c,d),number(o,a,b,c,d)),number(p,a,b,c,d)));
//类型5:A(A(a,b),A(c,d))
int[] result5 = dispose(j,dispose(i,number(m,a,b,c,d),number(n,a,b,c,d)),dispose(k,number(o,a,b,c,d),number(p,a,b,c,d)));
if (0 != result1[1]) {
if (result1[0] % result1[1] == 0) {
if (result1[0] / result1[1] == 24) {
if ((!map.ContainsKey (i))|| (!map.ContainsKey (j))|| (!map.ContainsKey (k))) {
//map.Remove(j);
//map.Remove(k);
if (!map.ContainsKey(i))
map.Add(i,i);
if (!map.ContainsKey(j))
map.Add(j, j);
if (!map.ContainsKey(k))
map.Add(k, k);
//map.Add (j,j);
//map.Add (k,k);
count += 1;
sb = sb.Append("((" + printNumber(m) + printSymbol(i) + printNumber(n) + ")" + printSymbol(j) + printNumber(o) + ")" + printSymbol(k) + printNumber(p) + "/r/n");
if (0 != result2[1]) {
if (result2[0] % result2[1] == 0) {
if (result2[0] / result2[1] == 24) {
if ((!map.ContainsKey(i))|| (!map.ContainsKey(j))|| (!map.ContainsKey(k))) {
//map.Remove(i);
//map.Remove(j);
//map.Remove(k);
if (!map.ContainsKey(i))
map.Add(i, i);
if (!map.ContainsKey(j))
map.Add(j, j);
if (!map.ContainsKey(k))
map.Add(k, k);
//map.Add(j,j);
//map.Add(k,k);
count += 1;
sb = sb.Append("(" + printNumber(m) + printSymbol(i) + "(" + printNumber(n) + printSymbol(j) + printNumber(o) + "))" + printSymbol(k) + printNumber(p) + "/r/n");
if (0 != result3[1]) {
if (result3[0] % result3[1] == 0) {
if (result3[0] / result3[1] == 24) {
if ((!map.ContainsKey(i)) || (!map.ContainsKey(j))|| (!map.ContainsKey(k))) {
//map.Remove(i);
//map.Remove(j);
//map.Remove(k);
if (!map.ContainsKey(i))
map.Add(i, i);
if (!map.ContainsKey(j))
map.Add(j, j);
if (!map.ContainsKey(k))
map.Add(k, k);
//map.Add(j,j);
//map.Add(k,k);
count += 1;
sb = sb.Append(printNumber(m) + printSymbol(i) + "(" + printNumber(n) + printSymbol(j) + "(" + printNumber(o) + printSymbol(k) + printNumber(p) + "))/r/n");
if (0 != result4[1]) {
if (result4[0] % result4[1] == 0) {
if (result4[0] / result4[1] == 24) {
.ContainsKey(i))|| (!map.ContainsKey(j))|| (!map.ContainsKey(k))) {
map.Remove(i);
map.Remove(j);
map.Remove(k);
if (!map.ContainsKey(i))
map.Add(i, i);
if (!map.ContainsKey(j))
map.Add(j, j);
if (!map.ContainsKey(k))
map.Add(k, k);
//map.Add(j,j);
//map.Add(k,k);
count += 1;
sb = sb.Append(printNumber(m) + printSymbol(i) + "((" + printNumber(n) + printSymbol(j) + printNumber(o) + ")" + printSymbol(k) + printNumber(p) + ")/r/n");
if (0 != result5[1]) {
if (result5[0] % result5[1] == 0) {
if (result5[0] / result5[1] == 24) {
if ((!map.ContainsKey(i))|| (!map.ContainsKey(j))|| (!map.ContainsKey(k))) {
//map.Remove(i);
//map.Remove(j);
//map.Remove(k);
if (!map.ContainsKey(i))
map.Add(i, i);
if (!map.ContainsKey(j))
map.Add(j, j);
if (!map.ContainsKey(k))
map.Add(k, k);
//map.Add(j,j);
//map.Add(k,k);
count += 1;
sb = sb.Append("(" + printNumber(m) + printSymbol(i) + printNumber(n) + ")" + printSymbol(j) + "(" + printNumber(o) + printSymbol(k) + printNumber(p) + ")/r/n");
//总共几种答案,过滤了类似的答案
//System.out.println("count: " + count);
public int printNumber(int i){
if(i == 0){
return aArray[0];
if(i == 1){
return bArray[0];
if(i == 2){
return cArray[0];
if(i == 3){
return dArray[0];
public String printSymbol(int i){
if(i == 0){
return " + ";
if(i == 1){
return " - ";
if(i == 2){
return " * ";
if(i == 3){
return " / ";
return "";
本文已收录于以下专栏:
相关文章推荐
问题提出:
       从一副扑克牌里 任意取 4张牌,如何通过 加减乘除,使结果等于24?
       任给4个数字 [1,13],通过 + - * / 运算,使得结果 = 24。
解题思路:...
2-08. 用扑克牌计算24点(25) (ZJU_PAT 数学 枚举)
C语言实现纸牌计算24点小游戏
 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的。程序主要功能已完成,目前...
//****24点纸牌游戏******
//版本:v1.0
//创建时间:日
//主要功能:系统随机生成1~13的4张牌(1用A代替,11用J代替,12用Q代替,13用K代替)...
根据网上的教程,申请了小程序开发,试着玩玩哈。
申请教程: /4049587.html
主要熟悉了一下小程序开发,熟悉了下各个组件
   主要写了个九九乘法表、...
/******************************************************************************
Copyright (C), 2001...
1 这道题目jie
文章来自Hackbuteer1
24点是一种老少皆宜的游戏,它的具体玩法如下:
给玩家4张牌,每张牌的面值都在1---13之间,允许其中有数值相同的牌。采用加、减、乘、除四则运算,允许中间运算存在...
 * game.c
 *  Created on:
 *      Author: brunie
#include...
网上搜了一些答案,发现有些答案在3个数运算等于24后就返回true了,明显不对。
这里还是用全排列忽略掉+-*/的优先顺序,然后对每一个排列进行dfs。import java.util.*;
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)当前位置:
>>>算“24点”是我国传统的数学游戏,这里有四张扑克牌(如图),用它们..
算“24点”是我国传统的数学游戏,这里有四张扑克牌(如图),用它们凑成“24点”的算式是(&&& )。
题型:填空题难度:中档来源:小考真题
8÷(3﹣8÷3)
马上分享给同学
据魔方格专家权威分析,试题“算“24点”是我国传统的数学游戏,这里有四张扑克牌(如图),用它们..”主要考查你对&&整数的四则混合运算及应用题&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
整数的四则混合运算及应用题
加、减、乘、除四种运算统称四则运算。加法的意义:把两个(或几个)数合并成一个数的运算叫做加法。减法的意义:已知两个加数的和与其中的一个加数求另一个加数的运算叫做减法。减法中,已知的两个加数的和叫做被减数,其中一个加数叫做减数,求出的另一个加数叫差。乘法的意义:一个数乘以整数,是求几个相同加数的和的简便运算,或是求这个数的几倍是多少。除法的意义:已知两个因数的积与其中一个因数求另一个因数的运算叫做除法。在除法中,已知的两个因数的积叫做被除数,其中一个因数叫做除数,求出的另一个因数叫商。四则运算分为二级,加减法叫做第一级运算,乘除法叫做第二级运算。方法点拨:运算的顺序:在一个没有括号的算式里,如果只含有同一级运算,要从左往右依次计算;如果含有两级运算,要先算第二级运算,再算第一级运算。在有括号的算式里,要先算括号里的,再算括号外的。
发现相似题
与“算“24点”是我国传统的数学游戏,这里有四张扑克牌(如图),用它们..”考查相似的试题有:
207691006381632416365044336105579224点数学游戏_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
24点数学游戏
本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
《24点数学游戏》(24 Math Game)是一个简单而又具有挑战性的聪明人的数学练习游戏,大小为4.4MB。
24点数学游戏基本信息
24点数学游戏
安全 免费 无广告
大小: 4.4MB
下载次数: 1万
24点数学游戏应用介绍
《24点数学游戏》是一个数学卡片游戏,游戏中的对象是找到一种方法来操纵四个整数,使最终的结果是24。加法,减法,乘法或除法,都可能是用来制造一个24。例如数字4,7,8,8,一种可能的解决办法如下:(7-8/8)* 4= 24。王牌,杰克,皇后和国王,给他们的值1,11,12和13。好游戏上极游,不会玩,没关系,带你走在android游戏最前端。[1]
.百度手机助手.[引用日期]

我要回帖

更多关于 数学游戏 的文章

 

随机推荐