代码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) 回帖