匪警请拨110——C++
问题描述
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
1 2 3 4 5 6 7 8 9 = 110
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
……
解决思路
其实一开始是没有啥思路的,在听了于航老师的讲解讲解之后星辰了自己的一点想法。
- 理解为一棵树,每棵树有三个节点,所依递归遍历;
- 可解节点应为算式的第一个元素即“ ”;
- 回溯状态恢复
易错点
- 对于c++在于字符串的处理 在这个题目中 主要用到了字符串的拼接; (C++直接对+进行了重载 所以string s0= string s1+string s2是合法的)
- itom()函数 (https://baike.baidu.com/item/itoa%E5%87%BD%E6%95%B0)
- 将字符串转换为对应十进制数字 ( 在代码中有具体体现);
代码解析
#include<iostream>
#include<stdlib.h>//itoa()
#include<cstring>//便于字符串处理
#include<math.h>
using namespace std;
int a[]={,,,,,,,,};//解决该问题的数据结构
void Try(int k,string so,int goal ) //试探函数
{
// cout<<"Goal: "<<goal<<endl; //调试中使用的输出
if(k==) //递归出口
{
if(a[]==goal)//判断是否为问题的解
{
cout<<a[]<<so<<endl;
// getchar(); //调试中使用的暂停
}
return;
}
char temp_1[]; //整形量转换字符量做准备,一个容器
itoa(a[k],temp_1,); //比较实用的函数
string A;
A=temp_1+so;
A="+"+A; //拼接 数的第一个分支
// cout<<"A: "<<A<<endl;
Try(k-,A,goal-a[k]);//更新goal
char temp_2[];
itoa(a[k],temp_2,);
string B;
B=temp_2+so;
B="-"+B;
// cout<<"B: "<<B<<endl;
Try(k-,B,goal+a[k]); //数的第二个分支
int x=a[k-];
char lenth[];
int j;
itoa(a[k],lenth,); //这个非常重要,要根据实际a[k]的长度来更新a[k-1],我就是在这里出现了无数次错误!!!!
j=strlen(lenth);
a[k-]=a[k-]*pow(,j)+a[k];
// cout<<"so: "<<so<<endl;
Try(k-,so,goal);
/* for(int i=0; i<9; i++)
{
cout<<a[i]<<"\t";
}
cout<<endl;*/
a[k-]=x;//回溯状态恢复
}
int main()
{
Try(,"",);
return ;
} #include<iostream>
#include<stdlib.h>
#include<cstring>
#include<math.h>
using namespace std;
int a[]={,,,,,,,,};
void Try(int k,string so,int goal )
{
// cout<<"Goal: "<<goal<<endl;
if(k==)
{
if(a[]==goal)
{
cout<<a[]<<so<<endl;
// getchar();
}
return;
}
char temp_1[];
itoa(a[k],temp_1,);
string A;
A=temp_1+so;
A="+"+A;
// cout<<"A: "<<A<<endl;
Try(k-,A,goal-a[k]);
char temp_2[];
itoa(a[k],temp_2,);
string B;
B=temp_2+so;
B="-"+B;
// cout<<"B: "<<B<<endl;
Try(k-,B,goal+a[k]); int x=a[k-];
char lenth[];
int j;
itoa(a[k],lenth,);
j=strlen(lenth);
a[k-]=a[k-]*pow(,j)+a[k];
// cout<<"so: "<<so<<endl;
Try(k-,so,goal);
/* for(int i=0; i<9; i++)
{
cout<<a[i]<<"\t";
}
cout<<endl;*/
a[k-]=x;
}
int main()
{
Try(,"",);
return ;
}
运行结果

匪警请拨110——C++的更多相关文章
- 2012年 蓝桥杯预赛 java 本科 题目
2012年 蓝桥杯预赛 java 本科 考生须知: l 考试时间为4小时. l 参赛选手切勿修改机器自动生成的[考生文件夹]的名称或删除任何自动生成的文件或目录,否则会干扰考试系统正确采集您的解答 ...
- 蓝桥杯-趣味算式-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 算法笔记_226:填符号凑算式(Java)
目录 1 问题描述 2 解决方案 1 问题描述 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训 ...
- java实现趣味拼算式
匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练! 某批警察叔叔正在进行智力训练: 1 2 3 4 ...
- Java实现填符号凑算式
匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练! 某批警察叔叔正在进行智力训练: 1 2 3 4 ...
- MCC460MNC08
因为搜得辛苦,正好也写点关于我morto工作有关的事情,给大家和我一样扫盲,哈哈 The GSM Mobile Country Code (MCC) is different from the i ...
- php微信开发 -- 两种运营模式及服务器配置
微信的两种运营模式 编辑模式:使用微信公众平台提供的功能 开发者模式:通过腾讯的api接口调用相应程序进行二次开发 编辑模式 应用场景: l 不具备开发能力的运营者 l 主要是进行品牌宣传.新闻媒体. ...
- python 基础例子 双色球 查询天气 查询电话
# 随机生成双色球import random# 随机数 1-16之间# r = random.randint(1,16)# print(r)phone_numbers_str = "匪警[1 ...
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
随机推荐
- jvm(转)
原:https://blog.csdn.net/luomingkui1109/article/details/72820232 1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构 ...
- 步步为营-90-SEO(url重写+超链接技巧)
目的:便于搜索引擎抓取 url重写:将带参数的url如:https://i.cnblogs.com/EditPosts.aspx?opt=1.修改为https://i.cnblogs.com/Edit ...
- K/3 Cloud Web API接口说明文
K/3 Cloud Web API接口说明文 目的 三方集成,提供第三方系统与Cloud集成调用接口. 技术实现 HTTP + Json 提供标准接口 编号 名称 说明 1 Kingdee.BOS.W ...
- java.net.UnknownHostException: master
1:如果你报这个错误,第一反应应该是本地的host文件没有配置服务器名称和对应的ip地址,这个反应就对了.贴一下错误和解决方法: java.net.UnknownHostException: mast ...
- ui-router实现返回上一页功能
angular.module('ConsoleUIApp', ['ui.router','ui.bootstrap']) .config(function ($stateProvider, $urlR ...
- ES集群
1. ElasticSerach集群安装 修改配置文件elasticserach.yml [elk@localhost config]$ vi elasticsearch.yml # ------- ...
- Redis数据库 02事务| 持久化| 主从复制| 集群
1. Redis事务 Redis不支持事务,此事务不是关系型数据库中的事务: Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的 ...
- JavaSE| 包装类| 时间
包装类 * 因为Java是面向对象的语言,所以很多API或新特性都是针对“对象”来设计的,但是Java设计之初时,是C语言很盛行的时候,所以Java保留了C语言中的8种基本数据类型, 保留它们有好处, ...
- 20165235 祁瑛 Java第四周考试总结
20165235 祁瑛 Java第四周考试总结 课后习题p29 p45 代码编写 import java.util.*; class Example2_5{ public static void ma ...
- ubuntu中git
1.在ubuntu中安装git $ sudo apt-get install git git-core 2.配置本机的git $ git config --global user.name " ...