`
Dustman
  • 浏览: 13678 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

24点

阅读更多

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;


#define EXCHANGE(a,b)                           \
  ({typeof(a) _tmp;                             \
    _tmp=a;                                     \
    a=b;                                        \
    b=_tmp;})


void permute_opt(vector<int> opt,vector<int> permlist,int index){

  if(index==3){

    int result;
    int ERROR=0;
    char save[3];
    result=permlist[0];

    for(int i=0;i<3;i++){
      switch(opt[i]){
      case 0:
        result=result+permlist[i+1];
        save[i]='+';
        break;
      case 1:
        result=result-permlist[i+1];
        save[i]='-';
        break;
      case 2:
        result=result*permlist[i+1];
        save[i]='*';
        break;
      case 3:
        if(result%permlist[i+1]==0){
          result=result/permlist[i+1];
          save[i]='/';
        }else{
          ERROR=1;
        }
        break;
      }
    }
    if(result==24&&ERROR==0){
      cout<<"(("<<permlist[0]<< save[0]             \
          <<permlist[1]<<")" << save[1]             \
          <<permlist[2]<<")" << save[2]             \
          <<permlist[3]<<"=24"<<endl;
    }
  }else{
    for(int i=0;i<4;i++){
      opt[index]=i;
      permute_opt(opt,permlist,index+1);
    }
  }

  return;
}


void permute(vector<int> permlist, int index){

  int i,vsize;
  vector<int> opt;

  opt.resize(3);
  vsize=permlist.size();

  if((index==vsize-1))

    permute_opt(opt,permlist,0);

  else{
    permute(permlist,index+1);

    for(i=index+1;i<vsize;i++){
      EXCHANGE(permlist[i],permlist[index]);
      permute(permlist,index+1);
    }
  }

  return;
}


int main(){

  int i,X;
  vector<int> permlist;

  for(i=0;i<4;i++){
    cin>>X;
    permlist.push_back(X);
  }

  permute(permlist,0);

  return 0;
}


先生成数的排列 再生成运算符号子集

但没消除重复项,懒了
分享到:
评论

相关推荐

    24点游戏以及通用的24点计算器源码

    这是一个二十四点小程序,功能分成二十四点游戏和二十四点计算器两个部分。目标及其实现如下。 1. 目标:控制台输入4个数字,产生一组解 实现:【24点计算机---一个结果】 2. 目标:测试所有二十四点问题,给出...

    scratch图形化少儿编程24点小游戏

    scratch图形化少儿编程24点小游戏

    二十四点小游戏,用c++实现的

    二十四点小游戏,用c++实现的。实现了见面化,有输入选项,当输入四个数字后,点击确定。就会在文本框输出所有能组成24的组合。如果计算不出来,则说明不能算出24点,则在文本框不显示任何内容!

    给你四张牌,算初24点

    给你四张牌,算24点! 本资源有算24点的具体算法、程序以及讲解!

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 【项目介绍】 该资源...

    24点游戏代码(完整的有界面)

    24点游戏代码(完整的有界面),可以下载参考,代码简单易懂,希望你们喜欢

    用C语言实现计算24点

    这是第一个24点,大家可以参考,改进; 大家互相学习,谢谢 作者QQ2051510483

    二十四点运算器

    寻找四个小于13的数混合运算为24的程序

    微信小程序24点计算游戏(源代码+截图)

    微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源代码+截图)微信小程序24点计算游戏(源...

    24点算法

    自动求解24点,利用树形结构

    24点小游戏的可执行文件 - java

    这是我们利用java编写的24点小程序,生成的可执行文件。 为了得到一个24点的小游戏,首先我们需要正确的获取外界的输入,包括他们对数字、符号的...2.判断四个数字之间所有组成24点的可能性。(剪枝版:得到一种结果)

    24点的C语言程序

    这是用C语言解决24点问题的源文件,学习算法的初学者或者对24点有兴趣的朋友可以看看

    java 速算24点程序

    java速算24点Applet程序

    用C语言实现24点小游戏

    步骤更清晰,思路更明了; 升级版24点; 希望大家支持一下

    24点计算程序(python)

    计算24点的python程序。例: Input: $ python z24.py 1 5 5 5 Output: 5*(5-(1/5)) end.

    C++二十四点游戏MFC编写

    C++二十四点游戏 全部结果都有,而且去掉了重复项,而且是可视化的结果。基本算法就是利用数字和运算符的双重递归。代码清晰。任给四个1~9(或1~13)数字,列出计算结果等于24的所有算式。去掉明显的重复算式,比如9...

    Delphi 24点游戏实例代码.rar

    Delphi 24点游戏实例代码,这是个图片版的24点游戏源码。读取第一个运算符的位置以得到表达式的第一个数字  function AnyFirstPos(Str: string): Integer;  //读取最后一个运算符的位置以得到表达式的最后一个...

    10以内24点解法大全

    制作了一个关于24点游戏的解法的一个文档,里面对于10以内的24点的所有可解游戏都给出了至少一种解法。希望对从事相关领域研究的同志们有所帮助。

    24点游戏swing _24点_

    可以使用eclipse运行24点卡牌、游戏 自带源程序 作用是让4个数相加得24

    微信小程序-微信小程序之24点计算游戏

    微信小程序之24点计算游戏 这是我第一次尝试用小程序开发的小游戏。 游戏难度分初、中、高三个等级,默认初级;每局游戏自动生成4个随机数(已经验证可算出24点,超过2种算法的算初级,只有一种为高难度,只有两种的...

Global site tag (gtag.js) - Google Analytics