递归递推练习题–M13

来源:互联网 发布:js正则表达式数字范围 编辑:程序博客网 时间:2024/05/16 11:29

 对一个自然数N ( 1 <= N <= 50 ) ,N可以分解成若干个数字(数字可以是1,2,3,….,9)之和,问题是如何分解能使这些数字的乘积最大。

本题就是把一个数尽可能分解多个3,最后一个数为4或3,2或1。输出时依次输出被什么数分解,最后输出分解因子的个数与乘积

#include<iostream>using namespace std;int sum=1,s=0;//sum计算乘积,s计算个数void solution(int x){if(x<=4)//小于等于4的输出{sum=sum*x;s=s+1;cout<<x<<" "<<endl;cout<<s<<" "<<sum<<endl;}else{cout<<"3"<<" ";sum=sum*3;s=s+1;solution(x-3);}}int main(){int n;while(cin>>n){solution(n);s=0;sum=1;}}
0 0
原创粉丝点击