天天看點

程式設計線上龐果網 線上程式設計 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

程式設計和線上

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

程式設計線上龐果網 線上程式設計 24點遊戲