Description

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

Input

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

Output

按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。(注意:就算两个数字之间没有插入符号也应该保留空格)

Sample Input

7

Sample Output

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

思路:该问题是一个DFS,我们可以把问题不断枚举" ","+","-"这三种情况,然后设置三个参数DFS(pos,sum,num)

pos指的是当前位置,sum为整个算式的和,num为当前数。

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
#include <map>
#include <set>
typedef long long LL;
const long long INF = 0x3f3f3f3f;
const long long mod = 1e9+7;
const double PI = acos(-1.0);
const int maxx = 125000;
#define MAX 10010
using namespace std;
int month[2][13]= {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int N;
char a[20];
void dfs(int pos,int sum,int num)
{if(pos==N){if(sum+num==0){cout<<a<<endl;}return ;}a[pos*2-1]=' ';if(num>0){dfs(pos+1,sum,num*10+pos+1);}else{dfs(pos+1,sum,num*10-(pos+1));}a[pos*2-1]='+';dfs(pos+1,sum+num,pos+1);a[pos*2-1]='-';dfs(pos+1,sum+num,-(pos+1));
}
int main()
{cin>>N;for(int i=0;i<N;i++){a[2*i]=i+'1';}dfs(1,0,1);return 0;
}

2.3.3 Zero Sum 和为零(DFS)相关推荐

  1. usaco ★Zero Sum 和为零

    ★Zero Sum 和为零 请考虑一个由 1 到 N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N. 现在请在数列中插入"+"表示加,或者" ...

  2. NUC1399 Sum It Up【DFS】

    Sum It Up 时间限制: 1000ms 内存限制: 65535KB 通过次数: 1总提交次数: 1 问题描述 Given a specified total t and a list of n ...

  3. Python sum函数- Python零基础入门教程

    目录 一.Python sum 函数介绍 二.Python sum 函数使用 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一. ...

  4. LeetCode 1973. Count Nodes Equal to Sum of Descendants(DFS)

    文章目录 1. 题目 2. 解题 1. 题目 Given the root of a binary tree, return the number of nodes where the value o ...

  5. 1181: 零起点学算法88——偶数求和(C语言)

    一.题目: 题目来源WUSTOJ 二.源代码: #include<stdio.h> int main() {int n, m, num, sum, i, j, k;while (scanf ...

  6. leetcode 112. Path Sum, 113. Path Sum II | 112,113. 路径总和 I, II(Java)

    题目 https://leetcode.com/problems/path-sum/ https://leetcode.com/problems/path-sum-ii/ 题解 简单的遍历二叉树,不解 ...

  7. 112. Path Sum

    原题链接:https://leetcode.com/problems/path-sum/description/ 二叉树相关问题,直接深度优先搜索走一波: /*** Created by clearb ...

  8. Leetcode: mimimum depth of tree, path sum, path sum II

    思路: 简单搜索 总结: dfs 框架 1. 需要打印路径. 在 dfs 函数中假如 vector 变量, 不用 & 修饰的话就不需要 undo 2. 不需要打印路径, 可设置全局变量 ans ...

  9. LeetCode 113. Path Sum II

    113. Path Sum II Given a binary tree and a sum, find all root-to-leaf paths where each path's sum eq ...

  10. 0x22.搜索 - 深度优先搜索

    目录 一.DFS三个经典NPC问题 1.子集和问题 2.全排列问题 3.N皇后问题 luogu P1219 [USACO1.5]八皇后 Checker Challenge luogu P1562 还是 ...

最新文章

  1. 海外web平台访问速度慢的原因之一
  2. 深入Windows原理杂记
  3. 基于java 的websocket的聊天功能,一开始初始化websocket,执行打开连接之后就直接关闭连接了。...
  4. 青少年蓝桥杯_2020_steam考试_中级组_第四题
  5. ubuntu14.04管理员密码忘记的解决方法
  6. 具有SmartFilterBar 的 SAP Fiori Elements 自动触发的搜索操作
  7. android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...
  8. Android背景色渐变效果(shape,gradient) (转)
  9. 监听浏览器是否被缩放 - 案例篇
  10. CSS中的IFC和BFC入门
  11. 董明珠的“接班人”出现了?22岁董明珠女秘书火了!本人回应...
  12. Vue之$options
  13. 操作DataTable
  14. Rust: 为什么同样的情况,有时不需要解引用?
  15. SEO之搜索引擎简史
  16. 夏普android4.4.2连u盘,即插即用 夏普复合机U盘直接打印教学
  17. 对抗机器学习——Min Max模型(Towards Deep Learning Models Resistant to Adversarial Attacks)
  18. 基于RS485通信的Modbus通信协议
  19. 用javascript实现一个打乱文字小程序
  20. Unity初级案例 - 吃豆人(Unity2017.2.0)Day 2

热门文章

  1. Spark DataFrames DataSet
  2. Kafka副本同步机制理解
  3. Kafka 设计与原理详解(二)
  4. 学习笔记——正则匹配方法整理
  5. rabbitmq消费者设置手动ack
  6. asp教程一:创建 Active Server Page 页
  7. 使用highcharts绘制图表,如何在tooltip里显示服务器端的其他数据
  8. 自定义Inspector检视面板
  9. Handler+MessageQueue等操作
  10. 【编程好习惯】使用sizeof减少内存操作失误