Public feed
#600684
/*ID: richard20PROG: zerosumLANG: C++*/using namespace std;#include<iostream>#include<fstream>#include<vector>#include<string>int n = 9;int spm [9];vector<int> parts;vector<string> answers;char code [3] = {' ','+','-'};int temp;int m;int sum;string tmp;void recurse(int v = 0){ if (v == n-1) { //for (int i = 0 ; i < n-1 ; i++) // cout << spm[i]; //cout << endl; parts.clear(); temp = 1; m = 1; //cout << temp << endl; for (int i = 0; i < n-1 ; i++) { //cout << spm[i] << ":"; if (spm[i] == 0) // space { temp *= 10; temp += i+2; } else { parts.push_back(temp*m); temp = i+2; if (spm[i] == 2) // minus m = -1; else m = 1; } //cout << temp << endl; } parts.push_back(temp*m); sum = 0; for (int i = 0 ; i < parts.size() ; i++) sum += parts[i]; if (sum == 0) { tmp = ""; for (int i = 0 ; i < n-1 ; i++) { tmp += (char)('0'+(i+1)); tmp += code[spm[i]]; } tmp+=(char)('0'+n); //cout << tmp << endl; answers.push_back(tmp); } return; } for (int i = 0; i < 3 ; i++) { recurse(v+1); spm[v]++; } spm[v]=0; }int main (){ ifstream in ("zerosum.in"); fill (spm, spm+9,0); //last = n-1; in >> n; //cout << n << endl;; recurse(); ofstream out("zerosum.out"); for (int i = 0 ; i < answers.size(); i++) out << answers[i] << endl; out.close(); return 0;}