将n分解为若干互不相同的自然数的和,并且使这些自然数的乘积最大,最大乘积是多少?
方法一:(这个好像错了,别看这个,还在想怎么改进)
动态规划
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[100];
//记录每个数的最大乘积是由该数的哪两个数分解而来的
int flag[100][2];
//初始最大乘积为该数本身(不分解)
for(int i=1;i<=n;i++){
a[i]=i;
flag[i][0]=i;
flag[i][1]=-1;
}
//从3开始分别求最大值