/*1 2 3 4 5 6 7 8 9 = 110;*/
#include<iostream>
using namespace std;
int num[10] = {1,2,3,4,5,6,7,8,9};
char visit[10];
int for_sum()
{
int sum = 0;
int pre_fig = 0; //当前数的前一个数
char pre = '0';
int i = 0;
for(i = 0 ; i< 9; i++)
{
if(visit[i] == '0')
{
pre_fig = pre_fig * 10 + num[i];
}
if(visit[i] == '+')
{
if(pre == '0')
{ //此种情况只适用于第一个数
sum = pre_fig; ///???? 0+12+3不属于这种情况 所以需pre这个变量记录0和12 之间的+号
pre_fig = num[i];
}
if(pre == '+')
{
sum = sum + pre_fig;
pre_fig = num[i];
}
if(pre == '-')
{
sum = sum - pre_fig;
pre_fig = num[i];
}
pre = '+';
}
if(visit[i] == '-')
{
if(pre == '0')
{
sum = pre_fig;
pre_fig = num[i];
}
if(pre == '+')
{
sum = sum + pre_fig;
pre_fig = num[i];
}
if(pre == '-')
{
sum = sum - pre_fig;
pre_fig = num[i];
}
pre = '-';
}
}
if(pre == '0')
{
sum = pre_fig;
pre_fig = num[i];
}
if(pre == '+')
{
sum = sum + pre_fig;
pre_fig = num[i];
}
if(pre == '-')
{
sum = sum - pre_fig;
pre_fig = num[i];
}
return sum;
}
void dfs(int cur)
{
if(cur > 8)
{
int sum = for_sum();
if(sum == 110)
{
for(int i = 0 ; i< 9 ; i++)
{
cout<<num[i];
if(visit[i + 1] == '0')
{ }
else{
cout<<visit[i + 1];
}
}
cout<<endl;
}
}
else if(cur <= 8)
{
visit[cur] = '0';
dfs(cur + 1);
visit[cur] = '+';
dfs(cur + 1);
visit[cur] = '-';
dfs(cur + 1);
}
}
int main()
{
memset(visit,'0',sizeof(visit));
dfs(1);
return 0;
}