递归法实现24点游戏

24点游戏是经典的纸牌益智游戏。
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。

递归算法将四个数变为三个数的计算,再变为两个数的计算
(1) 将4个整数放入数组中

(2) 在数组中取两个数字的排列,共有 P(4,2) 种排列。对每一个排列,对 + - * / 每一个运算符, 根据此排列的两个数字和运算符,计算结果
改表数组:将此排列的两个数字从数组中去除掉,将 2.1.1 计算的结果放入数组中,对新的数组,重复步骤 2
恢复数组:将此排列的两个数字加入数组中,将 2.1.1 计算的结果从数组中去除掉

#include <iostream>
#include <string>
#include <math.h>
#include <fstream>
using namespace std;

const double LING=1E-6;
const int COUNT=4;
const int VOLUE= 24;
double num[COUNT];
string E[COUNT];

bool Game(int n)
{
    if (n==1) 
	{
        if (fabs(num[0]-VOLUE)<LING) 
		{
			cout<<E[0]<<"="<<VOLUE<< endl;

			ofstream mycout("TopList.txt");  //将结果写入文件中
			mycout<<E[0]<<
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值