24点 C/C++代码


#include<iostream>
#include<string>
#include<cmath>
using namespace std;
const double PRECISION = 1E-6;
const int COUNT = 4;
const int RESULT = 24;
double number[COUNT]; //这里一定要用double,看看第一题的答案就知道为什么了
string expression[COUNT]; //保存表达式

bool Test(int n)
{

//递归结束
if (n == 1)
{
if (fabs(number[0] - RESULT) < 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 (Test(n - 1))
return true;
//减号有两种情况,a-b与b-a
expression[i] = ‘(‘ + expa + ‘-‘ + expb + ‘)‘;
number[i] = a - b;
if (Test(n - 1))
return true;
expression[i] = ‘(‘ + expb + ‘-‘ + expa + ‘)‘;
number[i] = b - a;
if (Test(n - 1))
return true;
expression[i] = ‘(‘ + expa + ‘*‘ + expb + ‘)‘;
number[i] = a * b;
if (Test(n - 1))
return true;
//除法也有两种情况,a/b与b/a
if (b != 0)
{
expression[i] = ‘(‘ + expa + ‘/‘ + expb + ‘)‘;
number[i] = a / b;
if (Test(n - 1))
return true;
}
if (a != 0)
{
expression[i] = ‘(‘ + expb + ‘/‘ + expa + ‘)‘;
number[i] = b / a;
if (Test(n - 1))
return true;
}
//恢复数组
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}

int main(void)
{

for (int i = 0; i < COUNT; i++)
{
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}

if (Test(COUNT))
cout << "Success" << endl;
else
cout << "Fail" << endl;
system("pause");
return 0;
}

24点 C/C++代码

时间: 2024-08-29 15:08:26

24点 C/C++代码的相关文章

2016年7月24日javascript学习代码复习

<!doctype html> <html> <head> <meat charset="utf-8"> <title>javascript循环</title> </head> <body> <script type="text/javascript"> /*1~100之间奇数和*/ var sum=0; for (var i=1;1<=100;i++)

C#学习笔记 ----网络(第24章)----示例代码

URI (Uniform Resource Identifier,统一资源标识符) System.Net.WebClient 请求文件 .NET Framework 目前支持以http:.https:和file:标识符开头的URI WebClient下载方法,DownloadFile() WebClient Client = new WebClient(); Client.DownloadFile("http://www.reuters.com","ReutesHomepag

Java代码操作HDFS(在/user/root/下面創建目錄)

1.创建HDFS目录并打成jar包 1 package Hdfs; 2 3 import java.io.IOException; 4 import java.net.URI; 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.fs.FileSystem; 8 import org.apache.hadoop.fs.Path; 9 /** 10 * 创建HDFS目录 11 * @author S

简易计算器(代码+封装+策略模式)

具体设计思路:1.先创建一个Windows窗体.2.添加所需控件,修改相应的属性值.3.对控件编写代码,使之实现相应的功能.4.设计出一个四则运算雏形后再根据需求完善代码.5.进行测试分析.6.对程序进行PSP耗时分析. 运行结果: 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Sys

JavaSE_ 多线程 总目录(23~24)

黑马程序员_JavaSE学习总结第23天_多线程123.01 多线程程序的引入23.02 进程概述及多进程的意义23.03 线程概述及多线程的意义23.04 并行和并发的区别23.05 Java程序运行原理和JVM的启动是多线程的吗23.06 实现多线程及多线程方式1的思路23.07 多线程方式1的代码实现23.08 获取和设置线程对象名称23.09 线程调度及获取和设置线程优先级23.10 线程控制之休眠线程23.11 线程控制之加入线程23.12 线程控制之礼让线程23.13 线程控制之守护

[JS]东方财富网财经数据汇总代码示例

把握全球金融状况 一个页面看全球金融,感觉不错 再加上以前做的,读取显示 新浪7*24财经直播数据页面 那看得就更舒服了 下面是 新浪7*24财经直播数据 代码地址: http://www.cnblogs.com/wangxinsheng/articles/4251228.html 效果图: 展开前 展开后 新浪7*24财经直播数据:在线Demo http://wangxinsheng.herokuapp.com/sinaFinLive 东方财富网财经数据汇总:在线Demo http://wan

四则运算《《《代码封装

设计思路: 因为TabControl可以设置不同页的选项卡.所以我用它来分页,进行出题,答题设置.然后用savefiledialog保存所出题目.设置两个RichTextBox保存所出题目和出好题后做题时显示的题目.用Count计算做题总数,Right计算做正确的数目.点击结束时弹出Form对话框显示做题情况. 具体实现代码: Form1.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Component

java 22 - 9 多线程之 代码实现的方式2

多线程的代码实现: 方式2:实现Runnable接口 步骤: A:自定义类MyRunnable实现Runnable接口 B:重写run()方法 C:创建MyRunnable类的对象 D:创建Thread类的对象,并把C步骤的对象作为构造参数传递(2种方法) a:Thread(Runnable target) b:Thread(Runnable target, String name) 方式2的好处: A:因为java的继承方式是单继承,方式2可以避免java单继承带来的局限性 B:适合多个相同的

Thinkphp模板开放给第三方编辑权限时,如何禁止模板使用php代码

如题,在项目有些项目中,我们需要把模板开放给第三方用户编辑,那么此时模板里面能使用php代码,将会是很重大的安全隐患. 那么如何禁止模板里面使用php代码呢?官方没有给出一个配置项,这是很遗憾的一件事情,没办法,那么我们只能自己修改代码禁止模板使用php了. 1.禁止模板使用<?php ?>标签,通过以下配置项完成 'TMPL_DENY_PHP' => true, //禁用原生php 2.禁止模板使用<php></php>标签 打开文件:ThinkPHP/Libr