P1025 [NOIP2001 提高组] 数的划分(dfs搜有顺序)

[NOIP2001 提高组] 数的划分 - 洛谷

#include
using namespace std;
const int N=220;
int n,k;
int ans;
void dfs(int sum,int cnt,int last)//当前的和,用了几个数,上个数
{
    if(cnt==k)
    {
        if(sum==n)
           ans++;
//        printf("return\n");
        return;
    }
    for(int i=last;i<=n-sum;i++)
    {
        dfs(sum+i,cnt+1,i);
    }
}
int main()
{
    scanf("%d %d",&n,&k);
    dfs(0,0,1);
    printf("%d\n",ans);
}

你可能感兴趣的:(深度优先,算法,图论)