[NOIP2001]数的划分
思路
dfs的简单题,数据很弱,注意每次减的数都比上一次当要大,分的方式就不会重复了;方案数+1的条件是n减k个数后刚好等于零(也可以理解为k个非递减的数之和等于n)
代码
#include<bits/stdc++.h> using namespace std; int n,k,ans=0; void dfs(int lf_num,int num,int lf_cnt){ if(!lf_cnt){ if(!lf_num) ans++; return; } for(int i=num;i<=lf_num;i++){ dfs(lf_num-i,i,lf_cnt-1); } } int main(){ scanf("%d%d",&n,&k); dfs(n,1,k); cout<<ans<<endl; return 0; }