P1025 数的划分 (DFS)
题意:求和为k个数和为n的组合总数。
思路:显然求组合只需按升序DFS即可。
#include<cstdio>
int n,k;
int dfs(int cnt,int x,int re){//re(remain)
if(cnt==k) return re==0;
if(re==0) return cnt==k;
int ans=0;
for(int i=x;i<=re;i++)
ans+=dfs(cnt+1,i,re-i);
return ans;
}
int main(){
scanf("%d%d",&n,&k);
printf("%d\n",dfs(0,1,n));
return 0;
}