思路:
暴力搜
#include <iostream>
#include <queue>
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
int ans[10005][10];
int cnt=-1;
int need=0;
int num[10];
void dfs5(int pos,int sum)
{
if(sum>need)
return ;
if(pos==4)
{
if(sum==need)
{
cnt++;
for(int i=1;i<=3;i++)
printf("%d",num[i]);
for(int i=2;i>=1;i--)
printf("%d",num[i]);
printf("\n");
}
return ;
}
for(int i=0;i<=9;i++)
{
if(pos==3)
{
num[pos]=i;
dfs5(pos+1,sum+i);
}
else
{
num[pos]=i;
dfs5(pos+1,sum+2*i);
}
}
}
void dfs6(int pos,int sum)
{
if(sum>need)
return ;
if(pos==4)
{
if(sum==need)
{
cnt++;
for(int i=1;i<=3;i++)
printf("%d",num[i]);
for(int i=3;i>=1;i--)
printf("%d",num[i]);
printf("\n");
}
return ;
}
for(int i=0;i<=9;i++)
{
{
num[pos]=i;
dfs6(pos+1,sum+2*i);
}
}
}
int main()
{
cin>>need;
for(int i=1;i<=9;i++)
num[1]=i,dfs5(2,2*i);
for(int i=1;i<=9;i++)
num[1]=i,dfs6(2,2*i);
if(cnt==-1)
cout<<-1<<endl;
}