USACO Zero Sum
2012-07-28 02:23
155 查看
没什么好说的,DFS,注意判断函数 eval()
/*
ID: wangxin12
PROG: zerosum
LANG: C++
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
int N;
ifstream fin("zerosum.in");
ofstream fout("zerosum.out");
string model = "1 2 3 4 5 6 7 8 9";
string opt = " +-";
bool eval() {
int sum = 0, curNum = 0;
int operater = 1;
int i = 0;
while(i <= 2 * N - 2) {
switch(model[i]) {
case ' ':
break;
case '+':
sum += operater * curNum;
curNum = 0;
operater = 1;
break;
case '-':
sum += operater * curNum;
curNum = 0;
operater = -1;
break;
default:
curNum = curNum * 10 + model[i] - '0'; break;
}
i++;
}
sum += operater * curNum;
if(sum == 0) return true;
else return false;
}
void DFS(int level) {
if(level > N - 1) {
if(eval()) {
for(int j = 0; j <= 2 * N - 2; j++) {
char c = model[j];
fout<<c;
}
fout<<endl;
}
return;
}
for(int i = 0; i < opt.size(); i++) {
model[2 * level - 1] = opt[i];
DFS(level + 1);
}
}
int main() {
fin>>N;
DFS(1);
fin.close();
fout.close();
return 0;
}
/*
ID: wangxin12
PROG: zerosum
LANG: C++
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
int N;
ifstream fin("zerosum.in");
ofstream fout("zerosum.out");
string model = "1 2 3 4 5 6 7 8 9";
string opt = " +-";
bool eval() {
int sum = 0, curNum = 0;
int operater = 1;
int i = 0;
while(i <= 2 * N - 2) {
switch(model[i]) {
case ' ':
break;
case '+':
sum += operater * curNum;
curNum = 0;
operater = 1;
break;
case '-':
sum += operater * curNum;
curNum = 0;
operater = -1;
break;
default:
curNum = curNum * 10 + model[i] - '0'; break;
}
i++;
}
sum += operater * curNum;
if(sum == 0) return true;
else return false;
}
void DFS(int level) {
if(level > N - 1) {
if(eval()) {
for(int j = 0; j <= 2 * N - 2; j++) {
char c = model[j];
fout<<c;
}
fout<<endl;
}
return;
}
for(int i = 0; i < opt.size(); i++) {
model[2 * level - 1] = opt[i];
DFS(level + 1);
}
}
int main() {
fin>>N;
DFS(1);
fin.close();
fout.close();
return 0;
}
相关文章推荐
- 例题8-3 和为0的4个值(4 Values Whose Sum is Zero, ACM/ICPC SWERC 2005, UVa 1152)
- uva 1152(4 values whose sum is zero)
- UASCO Zero Sum DFS + Stack
- bzoj1677 [Usaco2005 Jan]Sumsets 求和(递推)
- uva 1152 4 values whose sum is zero ——yhx
- non zero sum game 非零和博弈 推荐
- UVA1152 4ValuesWhoseSumIsZero
- POJ 2785: four values sum is zero
- bzoj:1677 [Usaco2005 Jan]Sumsets 求和
- BZOJ1677: [Usaco2005 Jan]Sumsets 求和
- UVA 1152 4 Values Whose Sum is Zero(好用的hash标记)
- 零和博弈 zero-sum game
- 解题报告 之 UVA1152 4 Values Whose Sum is Zero
- 和为0的4个值(4 Values Whose sum is Zero UVa 1152)
- bzoj 1677: [Usaco2005 Jan]Sumsets 求和(DP)
- Zero Sum chapter 2.3 dfs
- BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )
- 【BZOJ】1677: [Usaco2005 Jan]Sumsets 求和(dp/规律)
- 【bzoj1677】[Usaco2005 Jan]Sumsets 求和
- [USACO2005][poj2229]Sumsets(递推)