BASIC-9 特殊回文数

  • dfs或者循环都可
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> P;
const int N=77;
const double PI=acos(-1);
#define line '\n'
#define gt getchar()
#define mid ((L+R)>>1)
int read(){int x=0,op=1;char c=gt;while(!isdigit(c)){if(c=='-')op=-1;c=gt;}while(isdigit(c))x=x*10+c-48,c=gt;return x*op;}
int a[N],n;
vector<int> V;
void dfs(int sum,int val,int k)
{
	if(sum>n||val>999999)return;
	if(val>10000){
		int mark=0;
		for(int i=1;i<=k/2;++i)if(a[i]!=a[k-i+1]){
			mark=1;
			break;
		} 
		if(!mark&&sum==n)V.push_back(val);
	}
	for(int i=0;i<=9;++i){
		if(!k&&!i)continue;
		a[k+1]=i;
		int sm=sum+i,vl=val*10+i;
		dfs(sm,vl,k+1);
	}
}
int main()
{
	n=read();
	dfs(0,0,0);
	sort(V.begin(),V.end());
	for(int i=0;i<V.size();++i)cout<<V[i]<<line;
	return 0;
}
posted @ 2020-04-15 19:25  啥也不是*  阅读(90)  评论(0)    收藏  举报