dfs练习
不给提示,练习。
题意:
蒜头的数学实在是太差了,于是老师把他关到小黑屋让他闭门修炼。老师跟他一张纸,上面一排写着1, 2, 3...N这N个数,中间用空白分隔。老师让他在空白处填上加号或者减号。他让蒜头君求出一共有多少种加运算符的方法使得整个表达式的值为0,并输出所有的方案。比如N=7时,1 2 3 4 5 6 7排成一排,一种插入符号的方案为1+2-3+4-5-6+7=0。是不是很有趣,快来帮蒜头君解出这题吧。如果没有解,输出"None"。
输入为一行,包含一个整数N(3≤N≤9)。
输出为所有在每对数字间插入“+”或“-”后能得到和为零的数列,并按照字典(ASCII码)序排列。如果无解就输出一行None。
不知道字典序和ASCII也不要紧,我们看样例输出就清楚啦,1到N排成一排,先每个位置优先放"+",再放"-",这么放的原因是因为"+"的ASCII码要比"-"小。
样例输入
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
思考。。。。。思考。。。。
实在不懂可以看看下面代码的实现:
#include<iostream>
#include<cstdio>
using namespace std;
bool ok;//标记是否有解
void dfs(int n,int index,int sum,string res)
{
if(index>n)
{
if(sum==0)
{
ok=true;
for(int i=1;i<n;i++)
{
cout<<i<<res[i-1];
}
cout<<n<<"\n";
}
else return ;
}
dfs(n,index+1,sum+index,res+"+");
dfs(n,index+1,sum-index,res+"-");
}
int main()
{
string res="";
int n; scanf("%d",&n);
ok=false;
dfs(n,2,1,res);
if(!ok)
cout<<"None!"<<"\n";
return 0;
}
dfs练习的更多相关文章
- BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 1280 MBSubmit: 3127 Solved: 795[Submit][Status][Discu ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)
来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536 ...
- 深度优先搜索(DFS)
[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
- 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3495 Solved: 1032[Submi ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
随机推荐
- python_协程方式操作数据库
# !/usr/bin/python3 # -*- coding: utf-8 -*- import requests import gevent import pymysql from gevent ...
- php 通过curl获取远程数据,返回的是一个数组型的字符串,高手帮忙如何将这个数组类型的字符串变成数组。
如 Array([0] => Array([0] => Array([kd_status] => 已签收[kd_time] => 2014-04-30 18:59:43 [b] ...
- 编译原理:基于状态转换图识别for语句
int state =0;while(state<9){ switch state{ case 0: if(ch=='f'){ state=1;getchar(ch); } case 1: if ...
- awk处理重复行错误分析
[root@localhost ~]#cat 0712 YRSD2-1-11 YRSD2-2-18 YRSD1-1-8 YRSD1-1-18 YRSD1-1-20 YRSD1-1-25 YRSD1-2 ...
- MySQL相关文档索引
MySQL的新功能5.7 https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html MySQL5.7安装 http://note.youd ...
- Linux命令:useradd
Linux下:useradd 等价于 adduser Aix下:useradd 来自为知笔记(Wiz)
- C语言的格式符
转至:http://blog.csdn.net/zhanzheng520/article/details/10434791 一.格式符含义 1.d格式符:按十进制格式输出. %d ...
- JDK的下载,安装与环境的配置
JDK的全称是JavaSE Development Kit,即java开发工具包,是sun公司提供的一套用于开发java应用程序的开发包,它提供了编译.运行java程序所需的各种工具和资源,包括jav ...
- mysql将查询出来的一列数据拼装成一个字符串
使用GROUP_CONCAT函数. SELECT GROUP_CONCAT(查询的字段 separator ',') FROM table
- mysql 删匿名帐户
mysql默认安装,带有匿名帐户 删除它很简单 登录进入msyql并执行以下三行语句: use mysql; delete from user where user=''; flush privile ...