最后bool数组中值为false的位置对应的整数就是不能由其它数生成的。
下面是我写的代码。
#include<iostream>
using namespace std;
void SCS(int n)
{
int i;
bool *a=new bool[n+1];
memset(a,false,n+1);
int m=0,s=0,p=0,q=0;
for(i=1;i<=n;i++)
{
m=i%10;
p=(i/10)%10;
q=(i/100)%10;
s=(i/1000)%10;
if(i+m+p+q+s<=n)
{
a[i+m+p+q+s]=true;
}
}
for(i=0;i<=n;i++)
{
if(a[i])
cout<<i<<endl;
}
}
int main()
{
int n;
cout<<"please cin the max num:"<<endl;
cin>>n;
SCS(n);
return 0;
}
原文:http://blog.csdn.net/u014082714/article/details/44698751