思路啊,去哪了?
查看原帖
思路啊,去哪了?
1123159
str2011楼主2024/5/19 22:26

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

2024/5/19 22:26
加载中...