zoukankan      html  css  js  c++  java
  • 编程在线庞果网 在线编程 24点游戏

    最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--编程在线

        “24点游戏是一种应用扑克牌来停止的益智类游戏,游戏内容是:从一副扑克牌中抽去大小王剩下52张,任意抽取4张牌,把牌面上的数(A代表1)运用加、减、乘、除和括号停止运算得出24。每张牌都必须应用一次,但不能重复应用。 有些组合有不同种算法,例如要用2,4,6,12四张牌组合成24点,可以有如下几种组合方法: 2 + 4 + 6 + 12 = 24  4 × 6 ÷ 2 + 12 = 24  12 ÷ 4 × (6 + 2) = 24 当然,也有些组合算不出24,如1、1、1、1 和 6、7、8、8等组合。” --标题描述来自wikipedia:http://zh.wikipedia.org/wiki/24%E7%82%B9。 请完成函数can24,4张牌如果可以组成24点,返回1,不能则返回0。 友情提醒: 注意以下这些组合: 1 1 1 10    不可以; 6 6 6 6     可以; 5 5 5 1     可以,即可以用分数,如(5-1/5)*5 = 24; 1 1 1 11   可以;

        完胜利能函数即可:

        

        每日一道理
    谁说人与人隔着遥远的重洋,谁说心与心设着坚固的堤防?十六岁的鸟儿飞上天空,总会找到落脚的枝头。
    #include <iostream>
    #include <string>
    #include <cmath>
    #include <sstream>
    using namespace std;
    const double wucha=1E-6;  //浮点除法有精度损失 
    double num[4];
    bool flag;     //标记是否胜利 
    void game24(int n){
    	
    	
    	if(n==1){
    		if(fabs(num[0]-24)<=wucha){
    			flag=1; 
    			return ;
    		}
    	}
    	if(flag)return ;    //找到满意的一组即可 
    	for(int i=0;i<n;i++)
    	{
    		for(int j=i+1;j<n;j++)
    		{
    			double a,b;
    			a=num[i];
    			b=num[j];
    			num[j]=num[n-1];    //用最后一个元素覆盖,注意这里的n在每次递归中是要递加的 
    			num[i] = a + b;
    			game24(n-1);
    			num[i] = a - b;
    			game24(n-1);
    			num[i] = b -a;
    			game24(n-1);
    			num[i]=a*b;
    			game24(n-1);
    			if (b != 0)
    			{
    				num[i] = a / b;
    				game24(n-1);
    			}
    			if (a != 0)
    			{
    				num[i] = b / a;
    				game24(n-1);
    			}
    			num[i]=a;
    			num[j]=b;
    		    //递归恢复 
    		}
    	}
    }
    int can24(int a, int b, int c, int d){
    	num[0]=double(a); 
    	num[1]=double(b);
    	num[2]=double(c);
    	num[3]=double(d);
    	flag=0;
    	game24(4);
    	if(flag)return 1;
    	else return 0;
    }
    int main()
    {
    	cout<<can24(6,6,6,6)<<endl;
    	cout<<can24(1,1,1,10)<<endl;  //不可以 
    	cout<<can24(5,5,5,1)<<endl;
    	cout<<can24(1,1,1,11)<<endl;
    	
    	return 0;
    }

    文章结束给大家分享下程序员的一些笑话语录: 与女友分手两月有余,精神萎靡,面带菜色。家人介绍一女孩,昨日与其相亲。女孩果然漂亮,一向吝啬的我决定破例请她吃晚饭。
    选了一个蛮贵的西餐厅,点了比较贵的菜。女孩眉开眼笑,与我谈得很投机。聊着聊着,她说:“我给你讲个笑话吧。”“ok”
      “一只螳螂要给一只雌蝴蝶介绍对象,见面时发现对方是只雄蜘蛛。见面后螳螂问蝴蝶‘如何?’,‘他长的太难看了’,‘别看人家长的丑,人家还有网站呢’。”
      “呵呵………”我笑。忽然她问:“你有网站吗?”  

    --------------------------------- 原创文章 By
    编程和在线
    ---------------------------------

  • 相关阅读:
    linux权限补充:rwt rwT rws rwS 特殊权限
    关于Linux操作系统下文件特殊权限的解释
    Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 复数四则运算
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3112963.html
Copyright © 2011-2022 走看看