竞赛讨论区 > 小白萌新 望前辈能够指点一二 dfs简单的剪枝
头像
张大印
发布于 01-28 14:28
+ 关注

小白萌新 望前辈能够指点一二 dfs简单的剪枝

代码1:#include<bits/stdc++.h>

using namespace std;

int res=0;

void dfs(int n,int k,int ding){

if(n==0&&k==0) res++;

if(n<=0||k<=0) return ;//剪树枝

for(int i=ding;i<=n;i++){

dfs(n-i,k-1,i);

}

}

int main(){

int n,k; cin>>n>>k;

dfs(n,k,1);

cout<<res<<endl;

return 0;

} 代码2:#include<bits/stdc++.h>

using namespace std;

int n,m;

int ret=0;

void dfs(int c,int sum,int k){

if(c==m&&sum==n) ret++;

if(c>k||sum>n) return ;

for(int i=k;i<=n;i++){

dfs(c+1,sum+i,i);

}

}

int main(){

cin>>n>>m;

dfs(0,0,1);

cout<<ret<<endl;

} 请问代码1和代码2有什么本质的区别吗,为什么代码1正确而代码2 错误 问题链接:https://ac.nowcoder.com/acm/contest/952/A

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐