C++计算24点的简单程序

本文实例为大家分享了C++计算24点的的具体代码,供大家参考,具体内容如下

近来家庭作业里有24点的题目,为了找出所有可能的组合,就写了个简单的程序:

1. 运行程序

2. 输入4个整数,比如:3  3  7  8

3. 显示所有可能的组合

代码:

#include "assert.h"
#include <iostream>

double operate(double num1, double num2, int op)
{
 assert(op >= 0 && op < 4);

 if(op == 0){
 return num1 + num2;
 }
 else if(op == 1){
 return num1 - num2;
 }
 else if(op == 2){
 return num1 * num2;
 }
 else{
 return num1/num2;
 }
}

int calculate(int num1, int num2, int num3, int num4)
{
 char operators[] = "+-*/";

 for(int i = 0; i < 4; i ++)
 {
 for(int j = 0; j < 4; j ++)
 {
  for (int k = 0; k < 4; k ++)
  {
  double ret = operate(num1, num2, i);
  ret = operate(ret, num3, j);
  ret = operate(ret, num4, k);
  if(abs(ret - 24) < 0.001){
   printf("((%d %c %d) %c %d) %c %d = %f\n", num1, operators[i],
                    num2, operators[j],
      num3, operators[k],
      num4, ret);
  }

  ret = operate(num1, num2, i);
  double ret2 = operate(num3, num4, k);
  ret = operate(ret, ret2, j);
  if(abs(ret - 24) < 0.001){
   printf("(%d %c %d) %c (%d %c %d) = %f\n", num1, operators[i],
                    num2, operators[j],
      num3, operators[k],
      num4, ret);
  }

  ret = operate(num2, num3, j);
  ret = operate(num1, ret, i);
  ret = operate(ret, num4, k);
  if(abs(ret - 24) < 0.001){
   printf("(%d %c (%d %c %d)) %c %d = %f\n", num1, operators[i],
                    num2, operators[j],
      num3, operators[k],
      num4, ret);
  }

  ret = operate(num2, num3, j);
  ret = operate(ret, num4, k);
  ret = operate(num1, ret, i);
  if(abs(ret - 24) < 0.001){
   printf("%d %c ((%d %c %d) %c %d) = %f\n", num1, operators[i],
                    num2, operators[j],
      num3, operators[k],
      num4, ret);
  }

  ret = operate(num3, num4, k);
  ret = operate(num2, ret, j);
  ret = operate(num1, ret, i);
  if(abs(ret - 24) < 0.001){
   printf("%d %c (%d %c (%d %c %d)) = %f\n", num1, operators[i],
                    num2, operators[j],
      num3, operators[k],
      num4, ret);
  }
  }
 }
 }
 return 0;
}

int main(int argc, char* argv[])
{

 int nums[4] = {0, 0, 0, 0};
 std::cin >> nums[0] >> nums[1] >> nums[2] >> nums[3];

 for (int i = 0; i < sizeof(nums)/sizeof(nums[0]); i ++)
 {
 int num1 = nums[i];
 int ret = num1;

 for(int j = 0; j < sizeof(nums)/sizeof(nums[0]); j ++)
 {
  if(j == i)
  continue;

  int num2 = nums[j];

  for(int k = 0; k < sizeof(nums)/sizeof(nums[0]); k++)
  {
  if( k == i || k == j)
   continue;

  int num3 = nums[k];

  for(int l = 0; l < sizeof(nums)/sizeof(nums[0]); l ++)
  {
   if(l == i || l == j || l == k)
   continue;

   int num4 = nums[l];
   calculate(num1, num2, num3, num4);
  }
  }
 }
 }

 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现简单24点游戏

    本文实例为大家分享了C++实现简单24点游戏的具体代码,供大家参考,具体内容如下 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 程序风格良好(使用自定义注释模板) 列出表达式无重复. 以下为源代码 #include<iostream> #include<string> #include <stdlib.h> #include<time.h> using names

  • C++实现经典24点纸牌益智游戏

    本文为大家分享了经典24点纸牌益智游戏的具体实现方法,供大家参考,具体内容如下 一.实验内容 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表达式

  • C++计算24点的简单程序

    本文实例为大家分享了C++计算24点的的具体代码,供大家参考,具体内容如下 近来家庭作业里有24点的题目,为了找出所有可能的组合,就写了个简单的程序: 1. 运行程序 2. 输入4个整数,比如:3  3  7  8 3. 显示所有可能的组合 代码: #include "assert.h" #include <iostream> double operate(double num1, double num2, int op) { assert(op >= 0 &

  • at计划在指定时间和日期在计算机上运行命令和程序

    at计划在指定时间和日期在计算机上运行命令和程序.at 命令只能在"计划"服务运行时使用.如果在没有参数的情况下使用,则 at 列出已计划的命令. 语法 at [\\ComputerName] [{[ID] [/delete]|/delete [/yes]}] at [[\\ComputerName] hours:minutes [/interactive] [{/every:date[,...]|/next:date[,...]}] command] 参数 \\computernam

  • C语言实现纸牌计算24点小游戏

    利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节未处理,待完成ing...对于代码中的错误,恳请批评指正. 游戏描述: A-10:分别代表数字 1-10. J,Q,K:均代表数字1. 考虑到部分地方的规则,J,Q,K 也可以当成10 ,或者直接代表本身所代表的数字,即11.12.13来运算. 使用加减乘除,能得出24者为赢,存在无解情况. 游戏开始得分为1000分,每一秒钟减少

  • 利用Docker 运行 python 简单程序

    目录 1. 首先写一个 Dockerfile 2. build image,使用命令 3. 创建并运行容器 4. 重启容器 以下是一个简单的 python 程序,用户输入一个最小值和最大值,输出二者之间的随机数: from random import randint min_number = int(input('Please enter the min number: ')) max_number = int(input('Please enter the max number: ')) if

  • 分析C语言一个简单程序

    首先给大家一个简单的例子,让读者有个整体的认识,代码如下: #include <stdio.h> int main() { puts("我们"); return 0; } 函数的概念 先来看第4行代码,这行代码会在显示器上输出"我们".前面我们已经讲过,puts 后面要带( ),字符串也要放在( )中. 在C语言中,有的语句使用时不能带括号,有的语句必须带括号.带括号的称为函数(Function) . C语言提供了很多功能,例如输入输出.获得日期时间.文

  • python简单程序读取串口信息的方法

    本文实例讲述了python简单程序读取串口信息的方法.分享给大家供大家参考.具体分析如下: 这段代码需要调用serial模块,通过while循环不断读取串口数据 import time import serial ser = serial.Serial( #下面这些参数根据情况修改 port='COM1', baudrate=9600, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.SEVENBIT

  • python+VTK环境搭建及第一个简单程序代码

    简介: Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 在Windows环境下用Python语言开发VTK程序 1.安装Python集成开发环境IDLE,相信大家已经轻车熟路,如果不了解,大家可以参考:运行

  • java实现工资管理简单程序

    本文为大家分享了java实现工资管理简单程序的具体代码,供大家参考,具体内容如下 程序总体说明(ReadMe): 总体分为四部分: 管理程序(staffmanagment.java): 在这里面使用了arraylist泛型来存放数据 博主正在想办法把数据放进mysql,这样读取会更方便,而且数据不会消失 当然(也可以把数据存入txt文件) import java.util.ArrayList; //员工管理 public class staffmanagement {     ArrayList

  • Python实现快速计算24点游戏的示例代码

    目录 24 点游戏规则 回溯算法计算思路 生成表达式 24 点游戏规则 有4个范围在 [1,9] 的数字,通过「加.减.乘.除」四则运算能够获得24,认为有解. 4个范围在 [1,9] 的数字能够产生495种可能,其中404中组合情况都是有解的,有解概率高达81.62%. 下面我们用python来验证它,首先计算组合数: from scipy.special import comb comb(9, 4, repetition=True) 495.0 可以看到python计算出9个数字有重复的组合

  • 网页游戏开发入门教程三(简单程序应用)

    网页游戏开发入门教程二(游戏模式+系统)http://www.jb51.net/article/20724.htm 一.选择开发语言 后台:java .net php 前台:flex javascript ajax 数据库:mysql mssql 用哪种组合,真的不重要.重要的是时间和成本.复杂的地方在数据的交互和完善,而不在技术或效果的实现.往往遇到一些问题.比如地图如何编?人物移动如何实现?其实这些问题从技术上实现都比较容易.难在实现后,数据如何交互.没有解决数据交互的问题,实现这些技术点的

随机推荐