dfs枚举过,完全没有剪枝,最后的个求sum函数倒是有点麻烦

  1 /*
  2
  3 ID: hubiao cave
  4
  5 PROG: zerosum
  6
  7 LANG: C++
  8
  9 */
 10
 11
 12
 13
 14 #include<iostream>
 15
 16 #include<fstream>
 17
 18 #include<string>
 19
 20 #include<set>
 21 using namespace std;
 22
 23
 24  set<string,less<string> >ss;
 25
 26 char ch[3]={' ','+','-'};
 27
 28
 29
 30 void dfs(int);
 31 bool proc(string);
 32
 33 int N;
 34 int main()
 35
 36 {
 37
 38
 39     ifstream fin("zerosum.in");
 40
 41     ofstream fout("zerosum.out");
 42
 43 fin>>N;
 44     dfs(1);
 45     for(set<string>::iterator it=ss.begin();it!=ss.end();++it)
 46     {
 47         fout<<*it<<endl;
 48     }
 49
 50     return 0;
 51
 52
 53 }
 54
 55 string str;
 56
 57 void dfs(int n)
 58 {
 59     if(n<N)
 60     {
 61             str+='0'+n;
 62             for(int i=0;i<3;++i)
 63             {
 64                 str+=ch[i];
 65                 dfs(n+1);
 66                 str.erase(str.length()-1,1);
 67             }
 68             str.erase(str.length()-1,1);
 69     }
 70     else
 71     {
 72         str+='0'+n;
 73         if(proc(str))
 74            ss.insert(str);
 75         str.erase(str.length()-1,1);
 76     }
 77 }
 78
 79 bool proc(string str)
 80 {
 81     int sum=0;
 82     int prenum=0;
 83     bool prespace=false;
 84     char preope='@';
 85
 86     if(str=="1+2 3+4+5+6+7" )
 87         str="1+2 3+4+5+6+7 ";
 88     for(int i=0;i<str.length();i++)
 89     {
 90         if(str[i]>='1'&&str[i]<='9')
 91         {
 92             if(prespace==true)
 93             {
 94                 prenum=prenum*10+str[i]-'0';
 95                 prespace=false;
 96             }
 97             else
 98             {
 99                 prenum=str[i]-'0';
100             }
101         //    continue;
102         }
103         if(str[i]==' ')
104         {
105             prespace=true;
106             continue;
107
108         }
109
110         if(str[i]=='+'||str[i]=='-')
111         {
112             if(preope=='@')
113             {
114                 sum=prenum;
115                 preope=str[i];
116             }
117             else
118             {
119                 if(preope=='+')
120                     sum=sum+prenum;
121                 else
122                     sum=sum-prenum;
123                 preope=str[i];
124             }
125             continue;
126         }
127
128         if(i==str.length()-1)
129         {
130             if(preope=='@')
131                 sum=prenum;
132             else
133             {
134                 if(preope=='+')
135                     sum=sum+prenum;
136                 else
137                     sum=sum-prenum;
138             }
139         }
140     }
141     return !sum;
142 }

转载于:https://www.cnblogs.com/cavehubiao/p/3310189.html

Zero Sum chapter 2.3 dfs相关推荐

  1. NUC1399 Sum It Up【DFS】

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

  2. 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 ...

  3. 部分和问题 (dfs搜索 尺取)

    部分和问题 给定整数a1, a2, a3, a4,  ..........   ,  an  ,判断是否可以从中取出若干个数,使得他们的和恰好为k  . 1  <= n <= 20 测试数 ...

  4. hdu3699(不等式dfs)

    题意: 给出三个串,只由A~E组成,每个串的长度最长是8,字符相同代表那个位置的数字相同,数字可以是0~9,例如: ABBDE() ABCCC=BDBDE 可以是12245+12000=24245 ( ...

  5. HDU - 5788 Level Up(主席树+dfs序+树状数组)

    题目链接:点击查看 题目大意:给出一棵有向树,每个节点都有一个初始的权值 a[ i ] ,和一个通过计算得到的权值 mid[ i ] ,mid 数组的计算方法如下:mid[ u ] 为结点 u 及其子 ...

  6. 洛谷 - P1025 数的划分(dfs)

    题目链接:点击查看 题目大意:给出两个数n和k,要求将n分成k份,问有多少种方案数,注意: 1 1 5和1 5 1还有5 1 1算同一种方案 题目分析:因为n只给到了200,并且k最大为6,所以直接d ...

  7. 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/ 题解 简单的遍历二叉树,不解 ...

  8. [蓝桥杯][2013年第四届真题]剪格子(dfs)

    题目描述 历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. ±-–±-+ |10 1|52| ±-***–+ |20|30 1 ...

  9. 蓝桥杯2015初赛-牌型种数-dfs

    题目描述 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...

  10. c语言中dfs用pos做参数,LeetCode算法练习——深度优先搜索 DFS(2)

    更多干货就在我的个人博客 BlackBlog.tech 欢迎关注! 也可以关注我的csdn博客:黑哥的博客 谢谢大家! 我们继续LeetCode之旅. 做了一段时间的LeetCode,感觉还是不错的. ...

最新文章

  1. 图片远程保存,浏览器直接下载
  2. RabbitMQ负载均衡(2)——HAProxy
  3. 记一次调用API遇到的问题
  4. Hadoop学习之路(十三)MapReduce的初识
  5. centos7 搭建apache druid
  6. 【0】python核心编程,第二章
  7. python练手经典100例-Python 的练手项目有哪些值得推荐?
  8. Leecode 953. Verifying an Alien Dictionary[Easy]
  9. mysql如何把一个表直接拷贝到一个新的表
  10. Linux 下串口编程入门教程
  11. 网络工程师的机会在哪里
  12. DIY开源mini桌面i3结构3D打印机--分析
  13. 惠普1020打印机驱动安装教程
  14. blender烘焙法线贴图
  15. IP 防护等级技术白皮书
  16. 《基于机器视觉的高压输电线路覆冰厚度检测》论文笔记
  17. 2016年五一劳动节天津之旅
  18. 计算机应用 2010 成绩,2010西电计算机应用技术考研成绩
  19. 唯库拼课课程大合集更新111门
  20. 无线蓝牙耳机那个品牌比较好?试试这五款比较实用的吧

热门文章

  1. 前端在linux中常用的命令,前端在SSH上常用的Linux命令
  2. stc和sac_短期成本曲线
  3. IDEA中.properties配置文件输入中文显示Unicode编码,本地编辑器,服务器打开显示Unicode编码问题解决方案
  4. 2019年英语计算机二级,2019年下半年计算机二级考试时间和英语六级考..._成人英语考试_帮考网...
  5. mininet编程实现交换机规则的插入、删除与修改。_三层以太网交换机基本原理及转发流程...
  6. SpringMVC之安全性(一)
  7. MATLAB矩阵生成、引用
  8. 奇异值分解和非负矩阵分解
  9. 专题训练——[kuangbin带你飞]最短路练习
  10. 关于var、let和const