1. 程式人生 > >招商銀行信用卡中心筆試程式設計題

招商銀行信用卡中心筆試程式設計題

題目

整數成績最大化
給出一個整數n,將n分解為至少兩個整數之和,使得這些整數的乘積最大化,輸出能夠獲得的最大的乘積。
例如:
2=1+1,輸出1;
10=3+3+4,輸出36。

解法

程式碼

#include<iostream>

using namespace std;

int main()
{
    int num,result;
    cin>>num;
    if(num<2)
        result=0;
    if(num==2)
        result=1;
    if(num==3)
        result=2
; if(num>3) { int* dp=new int[num+1]; dp[1]=1; dp[2]=2; dp[3]=3; for(int i=4;i<=num;i++) { int current_max=-1; for(int j=1;j<=i/2;j++) { if(dp[j]*dp[i-j]>current_max) current_max=dp[j]*dp[i-j]; } dp[i]=current_max; } result=dp[num]; } cout
<<result<<endl; return 0; }