百度笔试题

来源:互联网 发布:淘宝客手机网站搭建 编辑:程序博客网 时间:2024/06/05 11:26

题目:有这样一种编码,如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;}


原创粉丝点击