HDU:4403 A very hard Aoshu problem
来源:互联网 发布:js怎么判断undefined 编辑:程序博客网 时间:2024/04/28 04:57
这要要用回溯法来做。好久没做回溯的题了,几乎忘光了~
但是我开始看到这个题的时候居然一点思路都没有。回想以前做过的回溯题,八皇后,数学表达式,全排列都有一个特点,都是试图枚举出全部情况,只不过有些不合要求的情况被直接否了。这种枚举是层次性的,可以说是无限个循环,不是几个循环可以写出来的。
先写一个循环枚举等号的位置,然后就进入递归可以枚举加号的位置。
好好领会吧~
这里有一些注意的地方。比如说判断等式左右是否相等的方法是当进入等号右边以后原和取其相反数,最后看结果是否为0即可。
字符串转数字也比较有技巧,以前我总是用atol这些函数,但是这样有个坏处必须遍历字串得到其始末位置才能截取,这份代码用了另一个办法。
但是我开始看到这个题的时候居然一点思路都没有。回想以前做过的回溯题,八皇后,数学表达式,全排列都有一个特点,都是试图枚举出全部情况,只不过有些不合要求的情况被直接否了。这种枚举是层次性的,可以说是无限个循环,不是几个循环可以写出来的。
先写一个循环枚举等号的位置,然后就进入递归可以枚举加号的位置。
好好领会吧~
这里有一些注意的地方。比如说判断等式左右是否相等的方法是当进入等号右边以后原和取其相反数,最后看结果是否为0即可。
字符串转数字也比较有技巧,以前我总是用atol这些函数,但是这样有个坏处必须遍历字串得到其始末位置才能截取,这份代码用了另一个办法。
比如说数字ABCD 其实就等于 ((A*10+B)*10+C)*10+D ,这样可以边遍历边计算。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;string str;int cnt=0;void dfs(int cur,int mid,int sum){ if(cur==str.size()) { if(sum==0) cnt++; return; } if(cur==mid) sum=-sum; int k,t=0; if(cur<mid) k=mid; else k=str.size(); for(int i=cur;i<k;++i) { t=t*10+str[i]-'0'; dfs(i+1,mid,sum+t); }}int main(){ while(cin>>str&&str!="END") { cnt=0; for(int i=1;i<str.size();++i) dfs(0,i,0); cout<<cnt<<endl; } return 0;}
- HDU 4403 A very hard Aoshu problem
- hdu 4403 A very hard Aoshu problem
- HDU:4403 A very hard Aoshu problem
- HDU 4403 A very hard Aoshu problem
- HDU 4403 A very hard Aoshu problem
- HDU 4403(A very hard Aoshu problem)
- HDU 4403 A very hard Aoshu problem
- hdu 4403 A very hard Aoshu problem
- hdu 4403 A very hard Aoshu problem
- HDU 4403A very hard Aoshu problem
- A very hard Aoshu problem HDU-4403
- hdu 4403 A very hard Aoshu problem
- HDU 4403 A very hard Aoshu problem(暴搜)
- HDU 4403 A very hard Aoshu problem (DFS)
- HDU 4403 A very hard Aoshu problem(DFS)
- Hdu 4403 A very hard Aoshu problem - 爆搜
- HDU 4403 A very hard Aoshu problem(DFS)
- HDU 4403 A very hard Aoshu problem (DFS暴力)
- ajax实例
- c++学习之多态(虚函数和纯虚函数)
- 2013-08-06(周二)
- hdu 2084 数塔
- DOM概念简记
- HDU:4403 A very hard Aoshu problem
- SSH远程连接不上重装完ubuntu服务器
- UVA 621 (13.08.06)
- UVA1351 UVALive 3363 String Compression
- 解析应用程序UI设计的15项黄金法则
- 统计一个字符串中英文字母的个数及各个字母出现的次数
- HTML5 自动聚焦 属性
- 如何设计好一款iOS游戏UI的细节
- 如何安装Ctags 和 Taglist