zoukankan      html  css  js  c++  java
  • [NOIP2001] 提高组 洛谷P1025 数的划分

    题目描述

    将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。

    例如:n=7,k=3,下面三种分法被认为是相同的。

    1,1,5; 1,5,1; 5,1,1;

    问有多少种不同的分法。

    输入输出格式

    输入格式:

    n,k (6<n<=200,2<=k<=6)

    输出格式:

    一个整数,即不同的分法。

    输入输出样例

    输入样例#1:
    7 3
    
    输出样例#1:
    4
    

    说明

    四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;

    暴搜。

    可以加一点剪枝,比如说当剩余数不够均分成剩余份数的时候,直接返回。

     1 /*by SilverN*/
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 int cnt;
     9 int n,k;
    10 void DFS(int r,int dep,int last){
    11     if(dep==1){
    12         if(r==last || r>last)cnt++;
    13         return;
    14     }
    15     for(int i=last;i<=r/dep;i++){
    16         DFS(r-i,dep-1,i);
    17     }
    18     return;
    19 }
    20 int main(){
    21     cin>>n>>k;
    22     DFS(n,k,1);
    23     cout<<cnt<<endl;
    24     return 0;
    25 }
  • 相关阅读:
    selenium3 + python
    selenium3 + python
    Linux 文件查找
    Linux 重定向与管道
    MySQL —— 基本查询方法
    Linux 用户和文件权限管理
    Linux bash介绍与使用
    Linux 文件操作
    Linux 文件系统简介
    Linux 帮助命令
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5967175.html
Copyright © 2011-2022 走看看