`
shenkun_918
  • 浏览: 27463 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一副扑克任意四张四则运算,结果为24

阅读更多
小时候总玩的,上次去华南理工看读研究生的同学,他在写,就回来写了个。除掉重复的,把全部可能都显示出来。
package dataStruct;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class twentyFour {
	
	static List lists = new ArrayList();
	@SuppressWarnings("unused")
	public static void main(String[] args){
		
		int a=0,b=0,c=0,d=0;
		//将a,b,c,d取由1到13的数字
		for(int i=1;i<=13;i++){
				a = i;
			for(int j=1;j<=13;j++){
					b = j;
				for(int k=1;k<=13;k++){
						c = k;
					for(int l=1;l<=13;l++){
							d = l;
							 outs(a,b,c,d);
					}
				}	
			}
		}
	}
	
	//将四个数带入计算,判断是否可以组成24,可以则输出
	@SuppressWarnings("unused")
	public static void outs(int a,int b,int c,int d){
		int count = 0;
		//两个数计算的结果是ab,三个数计算的结果是abc,最终结果是abcd
		double ab=0, abc=0, abcd=0;
		boolean todo = false;
		String[] s = new String[]{"+","-","*","/"};
		int[] content;
		for(int i=0;i<s.length;i++){
			ab = account(a,b,s[i]);
			for(int j=0;j<s.length;j++){
				abc = account(ab,c,s[j]);
				for(int k=0;k<s.length;k++){
					abcd = account(abc,d,s[k]);
					if(abcd == 24){
						content = new int[]{a,b,c,d};
						//排序,这样利于比较
						Arrays.sort(content);
						count++;
						Iterator iter = lists.iterator();
						while(iter.hasNext()){
							int[] list = (int[])iter.next();
							if(list[0]==content[0]&list[1]==content[1]&list[2]==content[2]&list[3]==content[3]){
								todo = true;
							}
						}
						if(!todo){
							lists.add(content);
							System.out.println(lists.size());
							System.out.println(a + " "+ b +" " + c + " " + d + "经过四则混合运算可以组成24");
						}
					}
				}		
			}
		}	
	}
	
	//具体的计算
	public static double account(double i, double j, String d){
		double k = 0;
		if(d.compareTo("+")==0){
			k = i + j;
		}else if(d.compareTo("-")==0){
			k = Math.abs(i - j);
		}else if(d.compareTo("*")==0){
			k = i * j;
		}else if(d.compareTo("/")==0){
			k = i / j;
		}
		return k;
	}
}
 

 

 

分享到:
评论

相关推荐

    用扑克牌计算24点问题代码

    一副扑克牌的每张牌表示一个数(J、Q、K分别表示11、12、13,两个司令不用)。任取4张牌,即得到1-13的数,请添加运算符(规定为加、减、乘、除四种)使之成为运算式。每个数只能参与一次运算,4个数顺序可以任意...

    给你四张牌,算初24点

    这个游戏的基本规则是:给定四张扑克牌,每张牌代表一个数字(通常从1到13,分别对应于数学中的1到13),玩家需要通过加、减、乘、除这四种基本运算,以及括号来组合这些数字,使得最后的结果等于24。在本资源中,...

    C语言实现扑克牌计算24点

    一副扑克牌的每张牌表示一个数(J、Q、K分别表示11、12、13,两个司令都表示6)。任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4个数...

    二十四点游戏代码的实现

    从一副扑克牌中(不包含大小王)任意派四张牌,只考虑其四个牌面值,以任意顺序应用加、减、乘、除四则运算,得出结果24

    计算机网络24分游戏课设完整版

    游戏内容是从一副扑克牌中抽去大小王剩下52张,任意抽取4张牌,把牌面上的数运用加、减、乘、除和括号等进行运算得出24。每张牌都必须使用一次,但不能重复使用,在本设计题目中,可以只选取在1-9这九张牌中随机取牌...

    商业编程-源码-24点算法的实现.zip

    24点算法的基本规则是:从一副扑克牌(去掉大小王)中任意抽取四张,不论顺序,利用加、减、乘、除、括号这五种运算,每张牌只能用一次,使得结果等于24。这个问题可以转化为一个深度优先搜索(DFS)或回溯算法问题...

    易语言源码24点游戏易语言源码24点游戏

    24点游戏通常使用一副扑克牌中的52张牌(不包括大小王),游戏的目标是从任意抽出的四张牌中,通过加、减、乘、除(可以使用括号改变计算顺序)这四种基本运算符来组合出结果为24的表达式。需要注意的是,在实际操作...

    软件大赛训练题目“国信蓝点杯”

    此题目要求参赛者分析一种基于扑克牌的游戏规则,游戏中玩家需从一副去掉大小王的扑克牌中抽取四张,通过计算使这四张牌的点数总和等于24。其中A代表1,J、Q、K分别代表11、12、13。这道题目结合了概率论、组合数学...

    ElevensGame:纸牌游戏

    每次操作可以选取任意两张牌进行相加或相减,如果结果为11或某两张牌的数值相等,则移除这这两张牌。 - **游戏流程**:当无法进行有效操作时,从牌堆中翻出新的牌替换桌面的牌。游戏继续直至牌堆用尽,最后剩余的牌...

Global site tag (gtag.js) - Google Analytics