暴力搜索
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int N,cnt;
char nap[20];
void dfs(int ret,int dep,int p)
{
if(dep==N+1)
{
if(!ret)
{
cnt++;
if(cnt>20) return;
for(int i=1;i<N;i++)
printf("%d %c ",i,nap[i]);
printf("%d\n",N);
}
return;
}
nap[dep-1]='+'; dfs(ret+dep,dep+1,dep);
nap[dep-1]='-'; dfs(ret-dep,dep+1,-dep);
nap[dep-1]='.';
int t=p>0?dep:-dep;
if(dep>9) dfs(ret+p*99+t,dep+1,p*100+t);
else dfs(ret+p*9+t,dep+1,p*10+t);
}
int main()
{
// freopen("test.txt","r",stdin);
scanf("%d",&N);
dfs(1,2,1);
printf("%d\n",cnt);
return 0;
}