调了两天了,最好成绩就是这个了,20分,求助
查看原帖
调了两天了,最好成绩就是这个了,20分,求助
524091
dami826楼主2023/3/5 21:27
#include<bits/stdc++.h>
using namespace std; 
stack<int> stk;
int n,k,ans=0,sum=0;
void dfs(){
    if(stk.size()==k){
        if(sum==n){
            ans++;
        }
        stk.pop();
        return;
    }
    for(int i=stk.top();i*(k-stk.size())<=n-sum;i++){
        stk.push(i);
        sum+=i;
        dfs();
        sum-=i;
    }
}
int main(){
    scanf("%d %d",&n,&k);
    for(int i=1;i*k<=n;i++){
        stk.push(i);
        sum+=i;
        dfs();
        stk.pop();
        sum-=i;
    } 
    printf("%d",ans);
    return 0;
}
2023/3/5 21:27
加载中...