zoukankan      html  css  js  c++  java
  • 洛谷 P1025 数的划分

          洛谷 P1025 数的划分

    题目描述

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

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

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

    问有多少种不同的分法。

    输入输出格式

    输入格式:

    n,k ( ≤ 200 ,≤ ≤ 6 )

    输出格式:

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

    输入输出样例

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

    说明

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

    思路:dfs搜索 或 递推

    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int n, m, s;
    int a[15];
    
    void dfs(int k) {
        if(n == 0) return;
        if(k == m) {
            if(n >= a[k-1]) s++;
            return;
        }
        for(int i = a[k-1]; i <= n/(m-k+1); i++) {
            a[k] = i;
            n -= i;
            dfs(k+1);
            n += i;
        }
    }
    
    int main() {
        scanf("%d%d", &n, &m);
        a[0] = 1;
        dfs(1);
        printf("%d
    ", s);
        return 0;
    }
    View Code
  • 相关阅读:
    文件读取原理和文件删除原理
    day 1 随堂作业
    day 2 随堂作业
    day 3 随堂作业
    day 4 随堂作业
    day 5 随堂作业
    day 6 随堂作业
    day 7 随堂作业
    day 8 随堂作业
    day 9 随堂作业
  • 原文地址:https://www.cnblogs.com/v-vip/p/9349296.html
Copyright © 2011-2022 走看看