1 2 3 4 5 6 7 8 9 = 81 在1-9之间添加加减乘除号,使等式成立

  1 /************************************************************************/
  2 /* 1 2 3 4 5 6 7 8 9 = 81 在1-9之间添加加减乘除号,使等式成立。                                                                     */
  3 /************************************************************************/
  4 #include <iostream>
  5 using namespace std;
  6
  7 bool stop = false;    //控制遍历终止
  8 int count_ = 0;        //计算结果数量
  9 int count_loop = 0;    //计算循环次数
 10
 11 void trans(int* arr, int index)    //从右往左递增遍历
 12 {
 13     if(index < 0)
 14         return;
 15     int temp = arr[index] / 4;
 16     if(temp <= 0)    //判断是否需要进位
 17         return;
 18     arr[index] = arr[index] % 4;
 19     if(index == 0)    //判断是否已经遍历完
 20     {
 21         stop = true;
 22         return;
 23     }
 24     arr[index - 1] += temp;
 25     trans(arr, index - 1);
 26 }
 27
 28 void show(int* symbol, int len)    //处理每次遍历结果,并显示正确项
 29 {
 30     float number[9]= {1,2,3,4,5,6,7,8,9};
 31     int symbol_copy[9];
 32     for(int i = 0; i < 9; ++i)
 33     {
 34         symbol_copy[i] = symbol[i];
 35     }
 36     /*
 37     计算出带乘除号的结果,将前面的项置为0,符号沿用前面的符号
 38     */
 39     for(int i = 0; i < len -1; i++)        //合并乘除项
 40     {
 41         if(symbol_copy[i] == 2 || symbol_copy[i] == 3)
 42         {
 43             if(symbol_copy[i] == 2)            //计算合并后的结果
 44             {
 45                 number[i+1] = number[i] * number[i+1];
 46             }
 47             else if(symbol_copy[i] == 3)
 48             {
 49                 number[i+1] = number[i] / number[i+1];
 50             }
 51             number[i] = 0;//合并后将前一个数置零
 52
 53             if(i == 0)
 54                 symbol_copy[i] = 0;
 55             else
 56                 symbol_copy[i] = symbol_copy[i-1];    //乘除结果合并,符号替换成前面的符号
 57         }
 58     }
 59
 60     float num = number[0];
 61     for(int i = 0; i < len - 1; ++i)    //计算结果
 62     {
 63         if(symbol_copy[i] == 0)
 64             num += number[i+1];
 65         else if(symbol_copy[i] == 1)
 66             num -= number[i+1];
 67     }
 68
 69     if(num == 81)//打印正确等式
 70     {
 71         count_++;
 72         for(int i = 0; i < len -1; ++i)
 73         {
 74             cout<<i+1;
 75             if(symbol[i] == 0)
 76                 cout<<"+";
 77             else if(symbol[i] == 1)
 78                 cout<<"-";
 79             else if(symbol[i] == 2)
 80                 cout<<"*";
 81             else if(symbol[i] == 3)
 82                 cout<<"/";
 83         }
 84         cout<<"9=81"<<endl;
 85     }
 86 }
 87
 88
 89 int main()
 90 {
 91     int  symbol[9] = {0};// [0:+ 1:- 2:* 3:/]
 92     int len = 9;
 93     while(!stop)
 94     {
 95         show(symbol, len);
 96         symbol[len-2]++;
 97         trans(symbol, len-2);
 98         count_loop++;
 99     }
100     cout<<"有 "<<count_<<" 种可能"<<endl;
101     cout<<"遍历了"<<count_loop<<"次"<<endl;
102     system("pause");
103     return 0;
104 }

时间: 2024-08-18 21:44:10

1 2 3 4 5 6 7 8 9 = 81 在1-9之间添加加减乘除号,使等式成立的相关文章

Windows Server定时重启任务制定

[本篇以Windows Server 2012 R2为例] 第一步:编写重启脚步 其实就是一句话:shutdown /r 其他shutdown命令参考可以使用shutdown /?查阅 第二步:设置任务计划程序 1.再开始-所有应用中找到任务计划程序 2.展开任务计划程序库,这里对任务计划程序做了很多的分类,我们找到System Manager类,在此类下创建自动重启系统任务 3.选择窗口右侧的创建任务(也可以使用创建基本任务,它是以向导的方法创建) 4.常规页面用于定义任务名称及执行任务的用户

windows安装TortoiseGit详细使用教程【基础篇】

环境:win8.1 64bit 安装准备: 首先你得安装windows下的git msysgit1.9.5 安装版本控制器客户端tortoisegit  tortoisegit1.8.12.0 [32和64别下载错,不习惯英文的朋友,也可以下个语言包] 一.安装图解: 先安装GIT[一路默认即可] 安装好git以后,右键,会发现菜单多了几项关于GIT的选项 2.安装tortoisegit[一路默认即可] 安装好以后,右键,会发现菜单多了几项关于tortoisegit的选项 到此,安装算完成了,相

iScroll5 API速查随记

版本 针对iScroll的优化.为了达到更高的性能,iScroll分为了多个版本.你可以选择最适合你的版本.目前我们有以下版本: iscroll.js,这个版本是常规应用的脚本.它包含大多数常用的功能,有很高的性能和很小的体积. iscroll-lite.js,精简版本.它不支持快速跳跃,滚动条,鼠标滚轮,快捷键绑定.但如果你所需要的是滚动(特别是在移动平台) iScroll 精简版 是又小又快的解决方案. iscroll-probe.js,探查当前滚动位置是一个要求很高的任务,这就是为什么我决

百度地图API实现批量地址解析

1.前言 写这篇文章的原因是最近做一个GIS项目在网上爬取了一些数据,无奈只有地址的文字信息没有坐标信息,如何把信息显现在地图上呢?很纠结啊,查看了一下百度地图API惊奇的发现百度提供了地址解析的API,然后查看了他的Demo后豁然开朗,所以动手将自己的文字信息数据进行解析坐标信息.下面开始讲解. 2.方案 (1)自己数据库中的数据 (2)百度地图API Demo <!DOCTYPE html> <html> <head> <meta http-equiv=&qu

Win10下IIS配置、项目发布、添加网站

Win10下IIS配置 1.找到控制面板:[开始]菜单鼠标右击,打开[控制面板] 2.打开控制面板,点击[程序],点击[启用或关闭Windows功能] 下一步,点击[启用虎关闭Windows功能] 3. 开始修改IIS了,我是这样勾上的,有可能比较多. 4. 验证IIS是否正确安装,等待几分钟后IIS配置完成.在浏览器输入http://localhost/iisstart.htm会出现 IIS安装成功页面.第一次修改的时候出现了成功页面,但是后来删除了IIS中默认的网站就打不开了,但是不影响的.

【API】高德地图API JS实现获取坐标和回显点标记

1.搜索+选择+获取经纬度和详细地址 2.回显数据并点标记 3.实现 第一步:引入资源文件 <!--引入高德地图JSAPI --><script src="//webapi.amap.com/maps?v=1.3&key=在官网申请一个key"></script><!--引入UI组件库(1.0版本) --><script src="//webapi.amap.com/ui/1.0/main.js">

记一次MySQL找回用户数据

事情经过 有天,我们公司外区的一个销售C说他8月3号以前的工作流记录找不到了.问清缘由,原来是更新了微信号(我们公司的工作流是基于企业微信开发的).经过分析,微信号和流程数据并没什么关系,所以初步得出结论:本来只需要更新微信号的,结果我们公司的流程系统管理员把用户先删除,再创建了新的用户. 解决过程 1.首先想到的是直接从定时备份数据里面找回原来的用户ID,结果发现系统只备份了十天的记录,而工作流系统上显示销售C只有8月3号以后的流程记录,距今已经40多天,从自动备份的数据里已经无法恢复. 2.

1449 砝码称重

1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 现在有好多种砝码,他们的重量是 w0,w1,w2,...  每种各一个.问用这些砝码能不能表示一个重量为m的东西. 样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中. Input 单组测试数据. 第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9). Output 如果能,输出YES,否则输出NO. Input示例

51nod 1489 蜥蜴和地下室

题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手(他们从左到右标记),这个弓箭手会失去a点生命值.同时,这个咒语使与第i个弓箭手左右相邻的弓箭手(如果存在)分别失去b(1 ≤ b < a ≤ 10)点生命值. 因为两个端点的弓箭手(即

聚焦新相亲时代:女孩在京有五六套房哭着想嫁富2代

2017-09-20 07:31:00 来源: 中国青年报(北京)        举报 6984 分享到: 易信 微信 QQ空间 微博 更多 用微信扫码二维码 分享至好友和朋友圈 T + - (原标题:中青报聚焦新相亲时代:2亿人及其背后家庭组成的"擂台") 石家庄某相亲角.视觉中国 资料 平均算下来,每一分钟里,国内有22对新人拿着户口本走向民政局,进入婚姻生活:同时,8对夫妻在另外一个窗口签下离婚协议. 根据民政部公布的数字,中国的结婚率和离婚率曲线渐渐逼近一个闭合的大于号.婚姻的