自己想的这个算法超时了,但是结果是对的。在网上搜没搜到。求效率高的算法。
#include<stdio.h>
#include<math.h>
int main()
{
int n,a[10]={0},b[10]={0},i=0,j,m,k,s=0,t,r=0;
scanf("%d",&n);
while(n)
{
for(j=4*n/5;j<n;j++)
{
m=j;
i=0;
while(m)
{
a[i++]=m%10;
m=m/10;
}
t=i-1;
while(t>-1)
{
for(k=i-1;k>=0;k--)
{
if(t<k)
s+=a[k]*pow(10,k-1) ;
else if(t>k)
s+=a[k]*pow(10,k);
else;
}
if((s+j)==n)
{
b[r++]=j;
}
t--;
s=0;
}
}
if(r==0)
{
printf("No solution");
}
else
{
for(k=0;k<r-1;k++)
{
if(b[k]==b[k+1])
{
k+=1;
printf("%d ",b[k]);
}
else
printf("%d ",b[k]);
}
if(k<r)
printf("%d",b[k]);
}
r=0;
printf("\n");
scanf("%d",&n);
}
return 0;
}