Zero Sum chapter 2.3 dfs
2013-09-09 17:00
169 查看
dfs枚举过,完全没有剪枝,最后的个求sum函数倒是有点麻烦
/* ID: hubiao cave PROG: zerosum LANG: C++ */ #include<iostream> #include<fstream> #include<string> #include<set> using namespace std; set<string,less<string> >ss; char ch[3]={' ','+','-'}; void dfs(int); bool proc(string); int N; int main() { ifstream fin("zerosum.in"); ofstream fout("zerosum.out"); fin>>N; dfs(1); for(set<string>::iterator it=ss.begin();it!=ss.end();++it) { fout<<*it<<endl; } return 0; } string str; void dfs(int n) { if(n<N) { str+='0'+n; for(int i=0;i<3;++i) { str+=ch[i]; dfs(n+1); str.erase(str.length()-1,1); } str.erase(str.length()-1,1); } else { str+='0'+n; if(proc(str)) ss.insert(str); str.erase(str.length()-1,1); } } bool proc(string str) { int sum=0; int prenum=0; bool prespace=false; char preope='@'; if(str=="1+2 3+4+5+6+7" ) str="1+2 3+4+5+6+7 "; for(int i=0;i<str.length();i++) { if(str[i]>='1'&&str[i]<='9') { if(prespace==true) { prenum=prenum*10+str[i]-'0'; prespace=false; } else { prenum=str[i]-'0'; } // continue; } if(str[i]==' ') { prespace=true; continue; } if(str[i]=='+'||str[i]=='-') { if(preope=='@') { sum=prenum; preope=str[i]; } else { if(preope=='+') sum=sum+prenum; else sum=sum-prenum; preope=str[i]; } continue; } if(i==str.length()-1) { if(preope=='@') sum=prenum; else { if(preope=='+') sum=sum+prenum; else sum=sum-prenum; } } } return !sum; }
相关文章推荐
- UASCO Zero Sum DFS + Stack
- Usaco 2.3 Zero Sums(回溯DFS)--暴搜
- hdu 1258 Sum It Up(dfs)
- The partial sum problem(dfs)
- HDU1258 Sum It Up 【DFS】+【判重】
- poj 1564 Sum It Up -- DFS 递归
- nyoj Thepartialsumproblem(DFS)
- dfs:Sum It Up
- HDU 1258Sum It Up(暴力dfs,记住相同的状态只保留一个)
- [leetcode][tree][dfs] Sum Root to Leaf Numbers
- chapter 2 section 2.3 Controlling Companies
- Find first subarray sum to zero
- Sum It Up---poj1564(dfs)
- hdu1258 Sum It Up (DFS)
- hdu1258 Sum It Up(dfs)
- NYOJ927 The partial sum problem(DFS)
- nyoj Thepartialsumproblem(DFS)
- Intel-x86-System-Programming-Guide, Part 1,Chapter 2.3 SYSTEM FLAGS AND FIELDS IN THE EFLAGS REGISTER
- leetcode@ [124] Binary Tree Maximum Path Sum (DFS)
- leetcode@ [129] Sum Root to Leaf Numbers (DFS)