精华内容
下载资源
问答
  • 其方法是任意取出4张牌,A J Q K 王牌 1,其它牌按点数计算,花色不计.目标是通过加、减、乘、除和括号最终24.设计一个程序,输入4个数字(1~10)则列出所有可能计算结果为24的方案.要求:方案不能重复(加法乘法...

    Java24点

    计算24是流行的扑克游戏.其方法是任意取出4张牌,A J Q K 王牌 算 1,其它牌按点数计算,花色不计.

    目标是通过加、减、乘、除和括号最终算出24.设计一个程序,输入4个数字(1~10)

    则列出所有可能计算结果为24的方案.要求:

    方案不能重复(加法乘法交换律等算不同方案).

    计算中局部可以为分数,结果为整数即可(如 3 3 7 7 算法:(3 + 3/7)*7)

    如果没有找到方案输出:

    public class Test2

    {

    public void Fun(int a,int b,int c,int d)

    {

    int op1,op2,op3 = 0;

    String x = null,y = null,z = null;

    double n = 0;

    for (op1 = 0; op1 < 4; op1++)

    {

    switch (op1)

    {

    case 0:

    n = a + b;

    x = "+";

    break;

    case 1:

    n = a - b;

    x = "-";

    break;

    case 2:

    n = a * b;

    x = "*";

    break;

    case 3:

    n = a / b;

    x = "/";

    break;

    }

    for (op2 = 0; op2 < 4; op2++)

    {

    switch (op2)

    {

    case 0:

    n = n + c;

    y = "+";

    break;

    case 1:

    n = n - c;

    y = "-";

    break;

    case 2:

    n = n * c;

    y = "*";

    break;

    case 3:

    n = n / c;

    y = "/";

    break;

    }

    for (op3 = 0; op3 < 4; op3++)

    {

    switch (op3)

    {

    case 0:

    n = n + d;

    z = "+";

    break;

    case 1:

    n = n - d;

    z = "-";

    break;

    case 2:

    n = n * d;

    z = "*";

    break;

    case 3:

    n = n / d;

    z = "/";

    break;

    }

    if (n == 24.0)

    {

    System.out.println("(" + "(" + a + x + b + ")" + y + c

    + ")" + z + d + ")");

    System.out.println("---------------------------");

    }

    }

    }

    }

    }

    public void Scan()

    {

    int n = 0;

    while (n < 10000)

    {

    int a = (int) ((Math.random() * 9) + 1);

    int b = (int) ((Math.random() * 9) + 1);

    int c = (int) ((Math.random() * 9) + 1);

    int d = (int) ((Math.random() * 9) + 1);

    Fun(a,b,c,d);

    n++;

    }

    }

    /**

    * @param args

    */

    public static void main(String[] args)

    {

    Test2 t = new Test2();

    t.Fun(1,2,3,4);

    t.Fun(4,6,9,5);

    t.Scan();

    }

    }

    注:有的结果正确,有的不正确,这是为啥?

    例如:

    ((4*2)*3)-5)

    ---------------------------

    ((4*2)*3)/5)

    但是不是24

    作业帮用户2016-12-07举报

    6c0a0adef10d1043fa4f41a7897345ed.png

    展开全文
  • 扑克牌算24点 DFS

    千次阅读 2015-08-05 18:56:32
    任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4个数顺序可以任意组合,4个运算符任意取3个且可以重复取。运算遵从一定优先级别,可加...

    一副扑克牌的每张牌表示一个数(J、Q、K分别表示11、12、13,两个司令都表示6)。任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4个数顺序可以任意组合,4个运算符任意取3个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为24。请输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出-1表示无解。

    输入格式说明:

    输入在一行中给出4个整数,每个整数取值在[1, 13]。

    输出格式说明:

    输出一种解决方案的表达式,用括号表示运算优先。如果没有解决方案,请输出-1。

    样例输入与输出:

    序号 输入 输出
    1
    2 3 12 12
    
    ((3-2)*12)+12
    
    2
    5 5 5 5
    
    (5*5)-(5/5)
    
    3
    1 3 5 6
    
    (1+(3*6))+5
    
    4
    8 13 9 4
    
    8+((13-9)*4)
    
    5
    2 13 7 7
    
    2*(13-(7/7))
    
    6
    5 5 5 2
    
    -1

    用DFS来写,为了便于输出答案,添加一个string数组用于记录计算过程。注意double与0比较时不能用==

    /*2015.8.5cyq*/
    #include <iostream>
    #include <vector>
    #include <string>
    #include <math.h>
    using namespace std;
    
    const double threshold=1e-6;
    bool dfs(vector<double> &data,vector<string> &str,int n){
    	if(n==1){
    		if(fabs(data[0]-24)<threshold)
    			return true;
    		else
    			return false;
    	}
    	//选择其中两张牌进行处理,数组长度减1进行dfs
    	for(int i=0;i<n-1;i++){
    		for(int j=i+1;j<n;j++){
    			double a=data[i];
    			double b=data[j];
    			data[j]=data[n-1];//第n张牌填入j的坑
    			string strA=str[i];
    			string strB=str[j];
    			str[j]=str[n-1];//第n张牌填入j的坑
    
    			//i所在的坑用来存储两张牌运算的结果
    			data[i]=a+b;
    			str[i]='('+strA+'+'+strB+')';
    			if(dfs(data,str,n-1))
    				return true;
    			data[i]=a-b;
    			str[i]='('+strA+'-'+strB+')';
    			if(dfs(data,str,n-1))
    				return true;
    			data[i]=a*b;
    			str[i]='('+strA+'*'+strB+')';
    			if(dfs(data,str,n-1))
    				return true;
    			if(fabs(b)>threshold){
    				data[i]=a/b;
    				str[i]='('+strA+'/'+strB+')';
    				if(dfs(data,str,n-1))
    					return true;
    			}
    			if(fabs(a)>threshold){
    				data[i]=b/a;
    				str[i]='('+strB+'/'+strA+')';
    				if(dfs(data,str,n-1))
    					return true;
    			}
    			//现场恢复
    			data[i]=a;
    			data[j]=b;
    			str[i]=strA;
    			str[j]=strB;
    		}
    	}
    	return false;
    }
    
    int main(){
    	vector<double> data(4);
    	vector<string> str(4);
    	for(int i=0;i<4;i++){
    		cin>>str[i];
    		if(str[i].size()==1)
    			data[i]=str[i][0]-'0';
    		else
    			data[i]=10+str[i][1]-'0';
    	}
    	int len=4;
    	if(dfs(data,str,len)){
    		string result=str[0];
    		str[0].erase(str[0].end()-1);//去掉最外层的括号
    		str[0].erase(str[0].begin());
    		cout<<str[0]<<endl;
    	}else
    		cout<<-1<<endl;
    	return 0;
    }

    展开全文
  • 算24点算24点算24点”是一种数学游戏,正如象棋、围棋...“算24点”的游戏内容如下:一副牌中抽去大小王剩下52张,(如果初练也可只用1~10这40张牌)任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面...

    巧算

    24

    巧算

    24

    “算

    24

    点”是一种数学游戏,正

    如象棋、围棋一样是一种人们喜闻乐见的娱乐活动。

    它始于何年何月已无从考究,但它以自己独具的数学魅

    力和丰富的内涵正逐渐被越来越多的人们所接受。这种游戏

    方式简单易学,能健脑益智,是一项极为有益的活动。

    “算

    24

    点”的游戏内容如下:一副牌中抽去大小王剩

    52

    张,

    (如果初练也可只用

    1

    10

    40

    张牌)

    任意抽取

    4

    张牌(称牌组)

    ,用加、减、乘、除(可加括号)把牌面上

    的数算成

    24

    每张牌必须用一次且只能用一次,

    如抽出的牌

    3

    8

    8

    9

    ,那么算式为(

    9

    8

    8

    ×

    3

    或(

    9

    8

    ÷

    8

    )

    ×

    3

    等。

    “算

    24

    点”作为一种扑克牌智力游戏,还应注意计算

    中的技巧问题,

    不能瞎碰乱凑。

    这里向大家介绍几种常用的、

    便于学习掌握的方法:

    1

    .利用

    3

    ×

    8

    24

    4

    ×

    6

    24

    求解。

    把牌面上的四个数想办法凑成

    3

    8

    4

    6

    再相乘求

    解。如

    3

    3

    6

    10

    可组成(

    10

    6

    ÷

    3

    3

    24

    等。又如

    2

    3

    3

    7

    可组成(

    7

    3

    2

    3

    24

    等。实践证明,这

    种方法是利用率最大、命中率最高的一种方法。

    2

    .利用

    0

    11

    的运算特性求解。

    展开全文
  • 点击上面蓝字关注我们 数学中的24点游戏是指:一副扑克牌抽去大小王剩下52张,任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次。 为了提高孩子们的计算能力,最近发起...
    aa8c073f885361f7d38dfa85dd5c289e.png

    点击上面蓝字关注我们

    928a066a972b567f0a90ddc05c6dd9ff.png

        数学中的24点游戏是指: 一副扑克牌抽去大小王剩下52张,任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次。

         为了提高孩子们的计算能力,最近发起了巧算24点游戏,孩子们的热情高涨。让我们来瞅瞅小萌娃的表现吧!

    计算小窍门

    1、利用3×8=24、4×6=24、2×12=24求解 。把抽出的4个数想办法凑成3和8、4和6,2和12,再相乘求解。如果抽得的四张牌里没有2、3、4…怎么办呢?比如:1、5、7、11这组数,定7-5=2找12,或者定11-7=4找6。实践证明,这种方法是利用率最大、命中率最高的一种方法 。

    919fe60d23f945ff11c4911e4107e1b5.png

    2、利用0、1的运算特性求解。如3、4、4、8可以组成 3×8+4 - 4=24,或者组成 3×8×(4÷4)=24等。

    919fe60d23f945ff11c4911e4107e1b5.png

    3、消去法。有时候,3个数就可以算出24,多出来一个数,用消去法,可将多余的数除去。如3、5、9、10,3×5+9=24,多一个10,可将10-5=5,将10消去。

    919fe60d23f945ff11c4911e4107e1b5.png

    4、会意法。如4、4、4、4,4×4表示4个4,再加2个4,就是6个4。又如,2、7、8、9,9+7是2个8,再乘于2,变成4个8,再减一个8等于3个8。

    7ae5a9e6e4176551acd943ef8d30be15.png

    END

    dbc70f48610264d06d2cba101fa91b00.gif

    ef0ebd807998e5d5ce158a5f03559e1a.png

    展开全文
  • 任意抽取4张牌(称为牌组),用加、减、乘、除 (可加括号)把牌面上的数算成24。每张牌必须且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24。解决本问题两种常见思路:1. 表达式加括号。可以选择:不...
  • 11设计题目计算24点2问题描述有2、3、4、5、6、7、8、9、10、J、Q、K、A共13张牌,编一程序,判断对任意给定的4张牌,能否在进行加、减、乘、除运算后,其运算结果等于24。其中J按11计算,Q按12计算,K按13计算,A按...
  • 算24点”游戏:一副牌中抽去大小王剩下52张,任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次,如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3。 ...
  • 例如5张扑克计算72,60#计算5张扑克需要112500次迭代(计算4张只需要2250次)慢了很多#计算6张扑克需要十分钟吧#-----------------------------------------------------#程序功能: 随机生成或者用户输入4...
  • 算24点的一般方法及例题

    千次阅读 2011-03-18 09:07:55
    据说一副(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点。...“算24点”作为一种扑克智力游戏,还应注意计算中的技巧问题。计算时,我们不可能把面上的4个数的不...
  • 算24点的游戏内容如下一副牌中抽去大小王剩下52张如果初练也可只用110这40张牌任意抽取4张牌称牌组用加减乘除可加括号把牌面上的数算成24每张牌必须用一次且只能用一次如抽出的牌是3889那么算式为9883或3898或9883...
  • 文源网络,仅供学习之用,如有侵权请联系...如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算24,则为胜利;每张牌都必须使用,且只能使用一次。第一种解法依据游戏规则,我们可以想到如下解决思...
  • 5. 快算24

    千次阅读 2018-06-23 22:34:39
    要求设计一个程序,对于任意给出52张牌中的四张,运用+-×÷四种运算来判断能否每个数只能用一次,但不能不用,24来。注意,给出的4个数是无序的。 测试用例 输入 1 1 1 1 2 3 4 1 7 2 1 1 输出 no ...
  • 具体玩法是一副牌中抽去大小王剩下52张,任意抽取4张牌,利用四则运算把牌面上的数算成24。每张牌能且只能用一次。如5、1、7、1,可以用(5-1)×(7-1)或(5+7)×(1+1)两种方法得到。 经计算机准确计算,一副牌...
  • 如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算24,则为胜利;每张牌都必须使用,且只能使用一次。 第一种解法 依据游戏规则,我们可以想到如下解决思路:使用枚举的方法,.
  • 常见编程问题之速算24点两种解法

    千次阅读 2019-09-14 13:48:46
    之前面试某大厂的时候...“巧算24点”的游戏内容如下:一副牌中抽去大小王剩下52张,(如果初练也可只用1~10这40张牌)任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24.每张牌必须用...
  • 如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算24,则为胜利;每张牌都必须使用,且只能使用一次。 第一种解法 依据游戏规则,我们可以想到如下解决思路:使用枚举的方法,将所有的计算方法...
  • 24点

    千次阅读 2005-07-14 22:05:00
    计算24点(加、减、乘、除、括号) javascript版 v1.1作者:dlpower@163.com (转贴请注明作者)2004-04-26 请输入四个数字(1-13): 一副(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组不出24点。...
  • 24点纸牌游戏

    2011-11-08 19:01:49
    本程序用VB6.0编写而成,能独立运行下win9x/NT/2K/XP作操系统,此程序为一个智能24点任意给的四张扑克牌(不包括大小王),只能够用加、减、乘、除以及适当的括号连接这四张牌使结果为24,或者宣布根本就是无解的。...
  • 首先简单地介绍一下24点游戏:将一副扑克去除大小王,AK分别代表113。任意抽出4张任意使用加减乘除四则运算,使得这四个数运算的结果等于24。要求这四个数必须也只能使用一次。听上去很简单吧,下面我们就要运用...
  • 24点算法

    千次阅读 2005-07-14 22:08:00
    24点计算24点(加、减、乘、除、括号) javascript版 v1.1作者:dlpower@163.com (转贴请注明作者)2004-04-26 请输入四个数字(1-13):一副(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组不出24点。...
  • 计算24点

    千次阅读 2004-04-28 22:47:00
    Javascript版 v1.1作者:dlpower@163.com (转贴请注明作者)2004-04-26 请输入四个数字(1-13):一副(52张)中,任意抽取4张可有1820种不同组合,其中有458个牌组不出24点。二十世纪80年代中期,孙士杰从上海到...
  • 要求设计一个程序,对于任意给出52张牌中的四张,运用+-×÷四种运算来判断能否每个数只能用一次,但不能不用,24来。 测试样例 1 1 1 1 1 2 3 4 no yes 解答 #include <cstdio> #include <cmath&...
  • 24点游戏c语言源代码

    千次阅读 2011-07-22 11:28:56
    其方法是任意取出4张牌,A J Q K 王牌 1,其它牌按点数计算,花色不计。目标是通过加、减、乘、除和括号最终24。设计一个程序,输入4个数字(1~10),则列出所有可能计算结果为24的方案。要求: 方案不能...
  • 完美之星编程大赛 复赛第二场 24点

    千次阅读 2013-06-01 13:18:33
    描述: 两人用一副扑克(王牌除去)玩24点,规则是这样的:两人各出2张牌,谁先出来谁赢,赢家收回已经过的4张牌,最后看谁手里的牌多。四张牌分别用4个扑克牌面字符表示。A,1,2,3,4,5,6,7,8,9,10,J...
  •  描述: 两人用一副扑克(王牌除去)玩24点,规则是这样的:两人各出2张牌,谁先出来谁赢,赢家收回已过的4张牌,最后看谁手里的牌多。四张牌分别用4个扑克牌面字符表示。A,1,2,3,4,5,6,7,8,9,10,J...
  • 其方法是任意取出4张牌,A J Q K 王牌 1,其它牌按点数计算,花色不计。目标是通过加、减、乘、除和括号最终24。设计一个程序,输入4个数字(1~10),则列出所有可能计算结果为24的方案。要求: 方案不能重复...
  • 计算24(随机法)

    2013-01-10 11:53:02
    从一副扑克牌中任意取出4张,根据点数用加、减、乘、除计算出24。花色不计,点数:A、J、Q、K都算1,其它牌算本身的牌。 用计算机搜索算法的解法有很多。一般是用穷举法罗列每一种情况。本程序打算用一种不同寻常...
  • 题面的意思是给你八张牌,大小依次为1、1、2、2、3、3、4、4,你可以任意取出4张牌,在四个数之间添加“+”“-”“*”以及括号,使得它们可以凑出24点。然后问你总共有多少种这样的组合。 队友就赤果果的暴力出来了...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

任意4张牌算24点