您的位置:首页 > 其它

ACM(递归递推—M)

2017-03-31 21:07 183 查看
题目:输入一个数n,将n分成若干个数,这些数相乘最大。

解题思路:即看一个数n能分成多少个3,当最后一个数是4时则停止分,此时结果最大。

细节处理:以4为界限来分别讨论。

代码:#include<bits/stdc++.h>

using namespace std;

int main()

{

    int n;

    while(cin>>n)

    {

        int i,j,a[18]={0},sum=1;

        for(i=1;;i++)

        {if(n<=4)

        {

            a[i]=n;

            break;

        }

        if(n>4)

        {

            n-=3;

            a[i]=3;

        }}

    for(j=1;j<=i;j++)

    {

        sum*=a[j];

        cout<<a[j]<<" ";

    }

    cout<<endl;

    cout<<i<<" "<<sum<<endl;}

    return 0;

}

感想:做题时一定要考虑题目的本质,这个题的本质即看一个数n中能分成多少个3,知道最后一个为4为止此时结果最大,考虑到本质时做题才好做,更省力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: