/*
水题不表,dfs即可
*/
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int n;
vector<int> ans;
bool flag;
void dfs5(int k, int sum)
{
if(k == 2) {
if(n - sum * 2 < 10 && n - sum * 2 >= 0) {
ans.push_back(n - sum * 2);
ans.push_back(ans[1]);
ans.push_back(ans[0]);
for(int i = 0; i < 5; i++)
printf("%d", ans[i]);
printf("\n");
ans.pop_back();
ans.pop_back();
ans.pop_back();
flag = true;
}
return;
}
for(int i = 0; i < 10; i++) {
if(i == 0 && k == 0) continue;
ans.push_back(i);
dfs5(k+1, sum+i);
ans.pop_back();
}
}
void dfs6(int k, int sum)
{
if(k == 3) {
if(sum == n / 2) {
ans.push_back(ans[2]);
ans.push_back(ans[1]);
ans.push_back(ans[0]);
for(int i = 0; i < 6; i++) printf("%d", ans[i]);
printf("\n");
ans.pop_back();
ans.pop_back();
ans.pop_back();
flag = true;
}
return;
}
for(int i = 0; i < 10; i++) {
if(i == 0 && k == 0) continue;
ans.push_back(i);
dfs6(k + 1, sum + i);
ans.pop_back();
}
}
int main()
{
cin >> n;
flag = false;
ans.clear();
dfs5(0, 0);
ans.clear();
if(n % 2 == 0) dfs6(0, 0);
if(!flag) printf("-1\n");
return 0;
}
回文数字(dfs)
最新推荐文章于 2024-03-19 20:24:25 发布