递推递归——M

来源:互联网 发布:乐山电视台网络电视 编辑:程序博客网 时间:2024/05/20 23:33

一.题目描述

一个自然数,如何分解可使乘积最大。

二.思路分析

由数学知识可知,只有把N分成尽可能多的3,它们的乘积才能最大(当只剩下4时不用再分,因为: 4 > 3*1)

所以可利用循环解决

三,代码描述

#include<iostream>#include<vector>using namespace std;int main(){    int x,j=0,sum=1,i;    vector<int>p;    while(cin>>x)    {        for(;;)        {            if(x>4)            {                p.push_back(3);                x=x-3;                j++;            }            else break;        }        if(x==4)        {            p.push_back(4);            j++;        }        else        {            p.push_back(x);            j++;        }        for(i=0;i<j;i++)        {            sum=sum*p[i];            cout<<p[i]<<" ";        }        cout<<endl;        cout<<j<<" "<<sum<<endl;        sum=1;        j=0;        p.clear();    }        return 0;}
四.思路分析
本题重在知道将此自然数分成多个三。
Please enable JavaScript to view the &amp;lt;a href=&quot;http://disqus.com/?ref_noscript&quot;&amp;gt;comments powered by Disqus.&amp;lt;/a&amp;gt;


0 0
原创粉丝点击