• 【贪心】 poj 1032 和为n的若干数最大乘积


    给出n,把n分解为若干不相同数之和,使之乘积最大。
    贪心,Discuss里面的思路:把n分解为从2开始的连续整数,如果有多,则从高位开始依次加1。如26,我们得到2+3+4+5+6,此时还剩余6(26-2-3-4-5-6),接下来从高位依次加一,变成3+4+5+6+7,还剩1,继续加给最大的7,最后答案是3+4+5+6+8

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int main()
    {
    //      freopen("in.txt","r",stdin);
        int m,s=0,cnt=0,i,sum,j;
        cin >> m;
        for(i=2;;i++)
        {
            s+=i;
            cnt++;
            if(s>m)
            {
                s=s-i;    //9
                i--;    //4
                cnt--;    //3
                break;
            }
        }
    //     cout << s << endl;
    //     cout << i << endl;
    //     cout << cnt << endl;
        s=m-((i)*(i+1)*0.5-1);
    //    cout << s << endl;
        sum=s/cnt;  //6
        if(sum>0)
        {
            s=s-sum*cnt; //2
        }
    //    cout << sum << endl;
    //    cout << s << endl;
        cout << (2+sum);
        for(j=3;j<=i-s;j++)
        {
            cout << ' ' << (j+sum);
        }
        for(j=i-s+1;j<=i;j++)
        {
            cout << ' ' << (j+sum+1);
        }
        return 0;
    }
  • 相关阅读:
    MSSQL转MySql
    MVC 4中的坑
    IIS错误记录
    MongoDB C#备忘
    IL指令集 收藏【转载】
    使用aforg.net 录制摄像头 附源码
    使用aforg.net 捕获摄像头 附源码
    Tesseract parameters in 3.02 version
    Unity平台宏定义
    unity3d杂录【2】
  • 原文地址:https://www.cnblogs.com/balfish/p/4015186.html
Copyright © 2020-2023  润新知