TYVJ 1271 零式求和

描述

请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字组合在一起(请不在第一个数字前插入符号)。计算该表达式的结果并注意你是否得到了和为零。请你写一个程序找出所有产生和为零的长度为N的数列。 

输入格式

单独的一行表示整数N (3 <= N <= 9)。 

输出格式

按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。 

测试样例1

输入

7

输出

1+2-3+4-5-6+7 
1+2-3-4+5+6-7 
1-2 3+4+5+6+7 
1-2 3-4 5+6 7 
1-2+3+4-5+6-7 
1-2-3-4-5+6+7

思路:
1.枚举加减乘除,用dfs,在dfs的过程中把加减乘除搞一个数组记录下来
2.如果递归到了最后一个数字,考虑算和的问题,从低位枚举,如果遇到空格,把当前要加或减的数进一位,如果遇到加或减就将记录的数加进去,最后再处理一下,判断,计数
代码:

 1 #include<iostream>
 2 using namespace std;
 3 int n,ans[20],acc;
 4 void judge(){
 5     int sign = 1;
 6     int now = 0;
 7     int next = 1;
 8     for(int i = 1;i < n;i++){
 9         if(ans[i] == 3){
10             next = next * 10 + (i+1);
11         }else{
12             if(sign == 1) now += next;
13             if(sign == 2) now -= next;
14             if(ans[i] == 1) sign = 1;
15             if(ans[i] == 2) sign = 2;
16             next = i + 1;
17         }
18     }
19     if(sign == 1) now += next;
20     if(sign == 2) now -= next;
21     if(!now){
22         for(int i = 1;i < n;i++){
23             cout<<i;
24             if(ans[i] == 1) cout<<"+";
25             if(ans[i] == 2) cout<<"-";
26             if(ans[i] == 3) cout<<" ";
27         }
28         cout<<n<<endl;
29     }
30 }
31 int dfs(int deep){
32     if(deep == n){
33         judge();
34         return 0;
35     }
36     ans[deep] = 3;
37     dfs(deep+1);
38     ans[deep] = 1;
39     dfs(deep+1);
40     ans[deep] = 2;
41     dfs(deep+1);
42 }
43 int main(){
44     cin>>n;
45     dfs(1);
46     return 0;
47 }

View Code

转载于:https://www.cnblogs.com/hyfer/p/4823751.html

深搜——数字划分问题相关推荐

  1. sdut 取数字问题(深搜,动态规划)

    /* 首先看见这题想到的就是DFS但是求的是最短路径因此可以利用BFS,但是BFS学的太渣了,还是用动态规划来试试! dp[i][j]表示走到第i行j列时候的路径 dp[i][j]=min(dp[i- ...

  2. I - 滑雪 POJ - 1088(深搜,记忆化搜索)

    Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...

  3. nyoj-20-吝啬的国度(深搜)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...

  4. 【2018.3.10】模拟赛之一-ssl2574Closest【深搜】

    目录地址 前言 感谢黎某儿(划掉)教我这道题☆⌒(*^-゜)v. 正题 给出两个n位数A,B.我们需要找到两个最近的靠近A的n位数(第一个比A大或与A相等,第二个严格比A小),使得它们的十进制表示是B ...

  5. java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合

    今天,我们来简单介绍一下深度优先搜索(DFS)的概念和使用. 在百度词条中,对深搜的解释是这样的. 百度词条中的解释 由此,我们可知,深搜是广泛运用到 图 中的搜索方法之一. 用深度优先搜索遍历图的基 ...

  6. 7-72 功夫传人 (25 分)(深搜)

    7-72 功夫传人 (25 分) 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特 ...

  7. DSF深搜入门全排列笔记nyoj366

    DFS深搜之全排列(初学) 题目描述 思路解析与dfs模板伪代码 题目描述 以nyoj2.0 366题为例,记录入门dfs的代码,并理清思路,方便以后复习巩固,初学dfs如果有问题还请指出~ 链接: ...

  8. 题解HDU6148 Valley Numer(数位DP+深搜DFS)

    题解HDU6148 Valley Numer[数位DP+深搜DFS] 题目 解析 参考源码 题目 Description: 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Nu ...

  9. 方格取数(多线程dp,深搜)

    https://www.luogu.org/problem/P1004 题目描述 设有N×N的方格图(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某 ...

最新文章

  1. 智源发布:2021 年十大人工智能技术趋势【附下载链接】
  2. Oracle WebCenter 11g 快速开发指南--翻译(一)
  3. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )
  4. Spring-AOP @AspectJ进阶之绑定连接点方法入参
  5. httpRuntime 一点经验---引
  6. 云重磅 | 阿里云开源Blink;华为发布5G Cloud VR;AWS 将举行AI 大会 re;英伟达下调5亿美元业绩预期...
  7. 循环链表:拉丁方阵问题
  8. 二分图的最大匹配问题
  9. 【makefile】检测CC是否修改
  10. qt编写的android程序在android系统中运行,中文显示乱码的解决方法
  11. netty支持哪些协议_从零学习netty网络IO通讯开发框架
  12. HP服务器和H3C交换机端口绑定
  13. mysql 8 配置参数优化_MySQL性能优化之参数配置
  14. 十三届蓝桥杯国赛 内存空间 python 满分答案
  15. .NET CLR之垃圾回收(GC)
  16. TYUT太原理工大学2022需求工程考试选择题背诵版
  17. A Survey on Conversational Recommender Systems(2021)阅读笔记
  18. 初步了解Linux以及RHCE认证
  19. CSS指北——浮动(Floating)规则详解
  20. FPGA--ZCU106通过SFP+/SGMII模块传输数据-第二讲(全网唯一)

热门文章

  1. docker安装ubuntu镜像
  2. 简化从Win32到Windows 10的迁移之路
  3. 异步复位的串联T触发器
  4. fedora 20下使用gcc 4.8.2编译gcc-4.4.1的错误
  5. 外行看Flash的存储原理
  6. 边框回归的损失函数_分类损失函数,边框回归损失函数
  7. 区块链浏览器_欧科云链OKLink区块链浏览器,如何挖掘数据背后的价值?
  8. new 实例化对象是啥意思_二. 初步认识JS中的类和对象
  9. 美团科技 Java工程师_美团网java工程师面试都会问哪些问题?
  10. python二维元素向量_详解python Numpy中求向量和矩阵的范数