题目:有这样一种编码,如N=134,M=f(N)=143.其中N和M的位数一样,N,M可以均以0开头,N,M的各位数之和要相等,即1+3+4=1+4+3,且M是大于N中最小的一个,现在求这样的序列s,N为一个定值,其中S(0)=N,S(1)=fun(N),S(2)=fun(S(1));
#include "iostream"
using namespace std;
void fun(int sum, int i,const int N, int &a, bool &isfind)
{
if (i == 0 && sum != 0)
{
return;
}
if (i == 0 && sum == 0)
{
if (a > N)
{
isfind = true;
}
return;
}
for (int j=0; j<=9; j++)
{
a = 10*a +j;
int temp = a;
fun(sum-j, i-1, N, a, isfind);
if (isfind == true)
{
break;
}
a = (temp-j)/10;
}
}
void main()
{
int N=8;
int i=3;
int sum=8;
int thenext = 0;
bool isfind = false;
fun(sum, i, N, thenext, isfind);
cout<<thenext<<endl;
}