一个不错的24点计算程序

原创 2005年04月25日 12:07:00

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

const double PRECISION = 0.00001;

double number[4];
string expression[4];

bool Search(int n)
{
    if (n == 1)
 {
        if (fabs(number[0] - 24) < PRECISION)
  {
            cout << expression[0] << endl;
            return true;
        }
  else
  {
            return false;
        }
    }

    for (int i = 0; i < n; i++)
 {
        for (int j = i + 1; j < n; j++)
  {
            double a, b;
            string expa, expb;

            a = number[i];
            b = number[j];
            number[j] = number[n - 1];

            expa = expression[i];
            expb = expression[j];
            expression[j] = expression[n - 1];

            expression[i] = '(' + expa + '+' + expb + ')';
            number[i] = a + b;
            if (Search(n - 1)) return true;
           
            expression[i] = '(' + expa + '-' + expb + ')';
            number[i] = a - b;
            if (Search(n - 1)) return true;
           
            expression[i] = '(' + expb + '-' + expa + ')';
            number[i] = b - a;
            if (Search(n - 1)) return true;
                       

            expression[i] = '(' + expa + '*' + expb + ')';
            number[i] = a * b;
            if (Search(n - 1)) return true;

            if (b != 0)
   {
                expression[i] = '(' + expa + '/' + expb + ')';
                number[i] = a / b;
                if (Search(n - 1)) return true;
            }

            if (a != 0)
   {
                expression[i] = '(' + expb + '/' + expa + ')';
                number[i] = b / a;
                if (Search(n - 1)) return true;
            }

            number[i] = a;
            number[j] = b;
            expression[i] = expa;
            expression[j] = expb;
        }
    }
    return false;
}

void main()
{
    cout <<"Please input four numbers:" <<endl;
 
 for (int i = 0; i < 4; i++)
 {
        char buffer[20];
        int  x;   
        cin >> x;
        number[i] = x;
        itoa(x, buffer, 10);
        expression[i] = buffer;
    }

    if (Search(4))
 {
        cout << "Success." << endl;
    }
 else
 {
        cout << "Fail." << endl;
    }       
}

计算24点程序代码

如何计算二十四点#include char mark[4]={'+','-','*','/'}; float cal(float x,float y,int mark) { switch(mark...
  • xyisv
  • xyisv
  • 2017年01月24日 17:23
  • 2190

24点游戏设计

24点游戏设计 问题描述:在数字1-13中随机生成4个数字,运用加减乘除四则使4个数字的运行结果为24,每个数字仅能使用一次。 算法设计:实现24点运算有如下两种算法。        算法一穷举法。所...
  • qq_34778691
  • qq_34778691
  • 2017年04月11日 16:27
  • 319

24点游戏 Java 递归

24点游戏: import java.util.Scanner; public class Piont24 { static int[] arr; // 存放4个数 static in...
  • u011980994
  • u011980994
  • 2014年04月04日 21:12
  • 2387

QTP自动化测试之使用外部.Net DLL实现与Telnet的交互

QTP自动化测试之使用外部.Net DLL实现与Telnet的交互 发布于:2012-11-22 21:57:18来自【群】QTP                     编辑 希望公司喜...
  • chenfeng086
  • chenfeng086
  • 2014年07月07日 09:10
  • 573

c++简单24点游戏

c++简单24点游戏
  • jacoox
  • jacoox
  • 2017年04月12日 20:25
  • 654

24点游戏-c#求解-英雄会在线编程题目

小时候挺喜欢玩24的游戏,看到这道题也特别有感情,所以,就拿它来写写吧。       中间还有个小插曲,自己写完后,就拿数据进行测试,测试过程中,就然被一组随机数据给难倒了,呵呵,程序给出可以计算出...
  • mamihong
  • mamihong
  • 2014年03月17日 10:14
  • 1822

C++实现24点

24 点这个是比较经典的习题,里面涉及到排列组合以及如何处理四则混合运算的优先级问题...
  • justin_bkdrong
  • justin_bkdrong
  • 2015年05月19日 12:14
  • 1723

24点游戏综述(哪些例子会出现分数的情况)

24点游戏综述(哪些例子会出现分数的情况)
  • nameofcsdn
  • nameofcsdn
  • 2016年11月20日 01:14
  • 2574

24点游戏的回溯实现

这个程序实现了24点游戏,但是最后的输出有问题,好多重复的计算方法,比如,5+1+2和5+3就是两个不同的答案代码如下,#include #include #include #includ...
  • lanboyj
  • lanboyj
  • 2011年01月11日 22:10
  • 771

24点经典算法

1、概述  给定4个整数,其中每个数字只能使用一次;任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24点的游戏。这方面的程序很多,一般都是穷举求解。本文介绍一...
  • mingWar
  • mingWar
  • 2008年11月29日 19:11
  • 23011
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个不错的24点计算程序
举报原因:
原因补充:

(最多只允许输入30个字)