Public feed #600684

Mine

public cpp v1 · immutable
Raw Edit
·published 2007-07-03 01:13 UTC
rendered paste body
/*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;}