解题思路:提交一波 代为保存
考虑n=12 的情况下
033330算回文
注意事项:
参考代码:
#include<stdio.h>
int count;
int n;
int a[5],b[6],c[10000];
void jizhi_f(){
c[count++]=a[1]*10000+a[2]*1000+a[3]*100+a[2]*10+a[1];
}
void jizhi_s(){
c[count++]=b[1]*100000+b[2]*10000+b[3]*1000+b[3]*100+b[2]*10+b[1];
}
void jiwu(){
int i=0,t;
a[3]=n-2;
a[1]=1;
a[2]=0;
while(a[3]>9){
a[3]-=2;
a[2]+=1;
}
while(a[2]>9){
a[2]--;
a[1]++;
}
//printf("\n%d %d %d\n\n",a[1],a[2],a[3]);
jizhi_f();
while(a[3]>0){
while(a[2]>0 && a[1]<9){
a[2]--;
a[1]++;
jizhi_f();
}
a[3]-=4;
t=(n-a[3])/2;
a[2]=t-1;
a[1]=1;
while(a[2]>9){
a[2]--;
a[1]++;
}
if(a[1]>9 || a[3]<0){
return ;
}
jizhi_f();
}
}
void jiliu(){
int i,t;
t=n/2;
b[1]=0;b[2]=0;b[3]=t;
while(b[3]>9){
b[3]--;
b[2]++;
}
while(b[2]>9){
b[2]--;
b[1]++;
}
jizhi_s();
while(b[1]<=9 ){
while(b[2]<9 && b[3]>0){
b[3]--;
b[2]++;
jizhi_s();
//printf("%d %d %d\n",b[1],b[2],b[3]);
}
b[1]++;
if(b[1]>9){
return ;
}
t=(n-2*b[1])/2;
if(t<0){
return ;
}
b[3]=t;
b[2]=0;
while(b[3]>9){
b[3]--;
b[2]++;
}
if(b[2]>9){
return ;
}
jizhi_s();
}
}
void sort(){
int i,j,k;
for(i=0;i<count-1;i++){
for(j=i+1;j<count;j++){
if(c[i]>c[j]){
k=c[i];
c[i]=c[j];
c[j]=k;
}
}
}
}
int main(){
count=0;
scanf("%d",&n);
if(n<10 || n>100){
return ;
}
if(n>54){
printf("-1\n");
return ;
}
if(n%2==1){
if(n<=45){
jiwu();
}
else{
printf("-1\n");
return ;
}
}
else if(n%2==0){
if(n>45&&n<=54){
jiliu();
}
else if( n<45){
jiwu();
jiliu();
}
}
sort();
int i;
//printf("%d\n",count);
for(i=0;i<count;i++){
// if(c[i]%10==0){
// printf("%06d\n",c[i]);
// }
// else{
// printf("%d\n",c[i]);
// }
printf("%d\n",c[i]);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复