算法

发布时间 2023-10-29 10:10:45作者: 楠030416

分解不同自然数之和,乘积最大

#include<bits/stdc++.h>
using namespace std;
//根据数学知识,分成若干个2和3 

int maxn=0; //最大乘积 
void find(int num,int cur)
{    
    if(cur>maxn){
        maxn=cur;
    }
//    cout<<cur<<endl;
    if(num==0||num==1)    return;
    if(num>=3){
        find(num-2,cur*2);
        find(num-3,cur*3);
    }
    if(num==2){
        find(num-2,cur*2);
    }
}

int main()
{
    int num;
//    ifstream in;
//    in.open("input.txt");
//    in>>num;
//    in.close();
    
    cin>>num;

    find(num,1);
    
//    ofstream out;
//    out.open("output.txt");
//    out<<maxn;
//    out.close();
    
    cout<<maxn; 
    return 0; 
}