dfs咋做啊?难道dfs不能做?
#include <iostream>
using namespace std;
int n,a[10010],b[10010],maxn=0,k=0;
void dfs(int step,int sum,long long mul,int last){
if(sum==n){
if(maxn>mul){
k=step-1;
maxn=mul;
for(int i=1;i<step;i++){
b[i]=a[i];
}
}
return;
}
for(int i=last;i<=n;i++){
if(i+sum>n)break;
a[step]=i;
dfs(step+1,sum+i,mul*i,i);
}
}
int main(){
cin>>n;
dfs(1,0,1,1);
for(int i=1;i<=k;i++){
cout<<b[i]<<" ";
}
cout<<maxn<<endl;
return 0;
}
拿devc++测了一下,爆0