解题思路:提交一波 代为保存
考虑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 人评分
1009题解浏览:802 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
Hello, world! (C语言代码)浏览:766 |
出圈】指针malloc版浏览:377 |
上车人数 (C语言代码)浏览:753 |
【偶数求和】 (C++代码)浏览:744 |
母牛的故事 (C语言代码)浏览:495 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:469 |
字符串的修改 (C语言代码)浏览:1206 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:648 |