`
kjj
  • 浏览: 172214 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

24点计算

阅读更多
  package org.qinghua.dispatcher.test;

import java.util.Stack;

public class Gift {
	static String[] oprs = { "+", "-", "*", "/" };
	static Stack<Integer> numStack = new Stack<Integer>();
	static Stack<String> oprStack = new Stack<String>();

	public static void main(String[] args) {
		int num = 0;
		for (int i = 1; i < 10; i++) {
			for (int x = 0; x < 4; x++) {
				for (int j = 1; j < 10; j++) {
					for (int y = 0; y < 4; y++) {
						for (int m = 1; m < 10; m++) {
							for (int z = 0; z < 4; z++) {
								for (int n = 1 ; n < 10; n++) {
									numStack.push(i);
									numStack.push(j);
									numStack.push(m);
									numStack.push(n);
									oprStack.push(oprs[x]);
									oprStack.push(oprs[y]);
									oprStack.push(oprs[z]);
									// printStack(numStack);
									// System.out.print(",");
									// printStack(oprStack);
									if (cal24(numStack, oprStack)) {
										//printStack(numStack);
										//System.out.print(",");
										///printStack(oprStack);
										//;
										System.out.print(
												new StringBuffer(i+oprs[x]+j+oprs[y]+m+oprs[z]+n).reverse().toString()+" = 24 "
										 +(++num)+"\n");
									}
									// System.out.print(i+oprs[x]+j+oprs[y]+m+oprs[u]+n+"
									// ");

								}
							}
						}
					}
				}
			}
		}
		System.out.println("Number : " + num);
	}

	static void printStack(Stack stack) {
		System.out.print(stack);
		stack.clear();
	}

	static boolean cal24(Stack<Integer> ints, Stack<String> oprs) {
		int r = 0;
		while (!oprs.empty()) {
			String opr = oprs.pop();
			int a = ints.pop();
			int b = ints.pop();
			r = oprtwo(opr, a, b);
			ints.push(r);
			if (r == 0) {
				ints.clear();
				oprs.clear();
				return false;
			}
			
		}

		if ((r = ints.pop()) == 24) {
			ints.clear();
			oprs.clear();
			return true;
		}
		return false;
	}

	static int oprtwo(String opr, int a, int b) {
		if (opr.equals("+"))
			return a + b;
		if (opr.equals("-"))
			return a - b<0?0:a-b;
		if (opr.equals("*"))
			return a * b;
		if (opr.equals("/") && b != 0 && a > b && isIntegerRst(a, b)) {
			return a / b;
		} else
			return 0;
	}

	static boolean gyouxian(String opr1, String opr2) {
		if (opr1.equals(opr2))
			return false;
		if (opr1.equals("+") && (opr2.equals("/") || opr2.equals("*")))
			return false;
		if (opr1.equals("-") && (opr2.equals("/") || opr2.equals("*")))
			return false;
		return true;

	}

	static boolean isIntegerRst(int ai, int bi) {
		Integer a = ai;
		Integer b = bi;
		Float an = Float.valueOf(a.toString());
		Float bn = Float.valueOf(b.toString());
		//System.out.println(an/bn);
		return (String.valueOf((an / bn)).endsWith(".0"));
	}
}
分享到:
评论
3 楼 andyjojo 2009-01-15  
java的double经常会不精确,试试BigDecimal
2 楼 kjj 2009-01-15  
你说得很对,我当初考虑的时候特地排除了小数的,稍微修改一下,应该没问题,可以处理小数
1 楼 andyjojo 2009-01-15  
算法有个问题是处理不了需要小数时的解,如1 5 5 5、 1 3 4 6等。
你的算法对于这些值是无解的。可以考虑使用分数。而不是像你的程序那样,必须可以整除才行。
static boolean isIntegerRst(int ai, int bi)

相关推荐

    微信小程序24点计算游戏 (2)(源代码+截图)

    微信小程序24点计算游戏 (2)(源代码+截图)微信小程序24点计算游戏 (2)(源代码+截图)微信小程序24点计算游戏 (2)(源代码+截图)微信小程序24点计算游戏 (2)(源代码+截图)微信小程序24点计算游戏 (2)(源代码+截图)微信...

    微信小程序24点计算游戏(源代码+截图)

    微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源...

    C语言24点计算-CSDN.zip

    下面我们将详细介绍C语言的基础知识、小游戏编程的原理以及24点计算的具体实现。 首先,C语言是一种强大的、低级别的编程语言,它提供了对硬件的直接控制,是学习计算机科学的基础。C语言中的基本结构包括变量、...

    24点计算,附运行结果

    计算24点 只要有答案就能计算出 包括复杂的小数计算 逻辑:1)4位数 + ( )的所有组合 2)计算每个组合的值 值为24出结果 测试:执行test24 输入4个数字运行即可 src:[5 5 5 1] result:5 5 1 5 24 0 src:[7 8 9 ...

    二十四点计算(及源代码)

    《二十四点计算及其源代码解析》 在计算机编程领域,"二十四点计算"是一个常见的算法问题,它源自一种广受欢迎的数学游戏。该游戏的目标是使用四张扑克牌上的数字,通过加减乘除和括号操作,使得计算结果等于24。...

    24dianj.rar_24点计算_数字加减24_计算24点

    标题"24dianj.rar_24点计算_数字加减24_计算24点"揭示了这个游戏的核心——通过加、减、乘、除四种基本运算,将四个给定的数字组合成24。描述中的“简单的24点计算.选择四个数字,加减乘除计算得24”进一步明确了游戏...

    24点计算程序

    24点 HTML/JS代码, 通过排列组合方式 穷举24点计算方法

    qt实现游戏24点计算

    qt实现24点计算

    24点计算,带算法详解

    《24点计算:C++实现与算法解析》 24点游戏是一种广受欢迎的智力游戏,玩家需要从4个给定的数字中通过加、减、乘、除(允许括号)运算得出24。这个控制台程序是用C++语言编写的,虽然它没有采用面向对象编程的方式...

    计算24点的程序

    5. **事件监听**:在Android中,需要为按钮和其他交互元素设置事件监听器,如OnClickListener,当用户点击按钮时触发相应的函数,例如抽牌、计算24点等。 6. **数据结构**:在程序中,可能需要用到数组或集合(如...

    vb24点计算

    总的来说,通过VB实现24点计算程序是一个有趣的练习,它融合了数学逻辑和编程技巧。通过这个项目,程序员不仅可以熟悉VB的基本语法和控件使用,还能深入理解递归算法和数学问题的编程解决方案。

    24点计算程序1.0.0.zip

    《24点计算程序1.0.0》是一款基于VB(Visual Basic)编程语言开发的小游戏,由一位12岁的编程爱好者创作。该程序的主要功能是解决数学中的经典游戏——24点,它旨在通过算法解决四张扑克牌上的数字组合成24点的问题...

    24点计算VB小程序

    【标题】"24点计算VB小程序"是一个基于Visual Basic(VB)开发的程序,它设计用于解决经典的24点游戏。24点游戏是一种流行的心算游戏,玩家需要使用加、减、乘、除四种基本运算,以及括号来重新组合四张牌上的数字,...

    24点计算程序(python)

    计算24点的python程序。例: Input: $ python z24.py 1 5 5 5 Output: 5*(5-(1/5)) end.

    24点计算实验

    "24点计算实验"是利用C语言进行的一个有趣的数学与编程结合的项目。这个实验旨在训练学生的逻辑思维能力,以及对算术运算符和流程控制的理解。 24点游戏的基本规则是:从4个给定的1到10之间的整数中,通过加减乘除...

    使用Cocoa开发的二十四点计算程序

    在本文中,我们将深入探讨如何使用Cocoa框架开发一个二十四点计算程序,这是一个经典的数学游戏,目标是通过加减乘除运算将四张牌的数值组合成24。本项目适用于初学者,可以帮助他们理解Cocoa编程基础以及递归算法的...

    24点计算C++源代码

    《24点计算C++源代码解析》 24点游戏是一种广受欢迎的数学智力游戏,玩家需要通过加、减、乘、除四种基本运算,将四张牌上的数字组合成24。在这个主题中,我们将深入探讨一个使用C++语言实现的24点计算程序。该程序...

    微信小程序-微信小程序之24点计算游戏

    微信小程序之24点计算游戏 这是我第一次尝试用小程序开发的小游戏。 游戏难度分初、中、高三个等级,默认初级;每局游戏自动生成4个随机数(已经验证可算出24点,超过2种算法的算初级,只有一种为高难度,只有两种的...

    C#扑克牌24点计算游戏

    《C#实现的扑克牌24点计算游戏详解》 在计算机编程的世界里,游戏开发是一种既能锻炼逻辑思维,又能展现创造力的实践。本篇将深入探讨一款基于C#语言开发的扑克牌24点计算游戏,让我们一起揭秘这款游戏的设计理念、...

    24点计算程序(产生式算法)

    《24点计算程序——基于产生式算法的实现》 24点游戏是一种深受人们喜爱的智力游戏,玩家需要从四张1至13的扑克牌中,通过加、减、乘、除以及括号的运算,使得结果等于24。这种游戏锻炼了玩家的逻辑思维和数学运算...

Global site tag (gtag.js) - Google Analytics