洛谷 题解 P1025 【数的划分】
将n个小球放到k个盒子中的情况总数 = (a)至少有一个盒子只有一个小球的情况数 + (b)没有一个盒子只有一个小球的情况数
这样写出表达式:
a.因为盒子不加区分,那么=情况数与“将n-1个小球放到k-1个盒子中”的情况数相同
b.没有一个盒子只有一个小球,那么就把每个盒子中拿出来一个小球,对应的是“把(n-k)个小球放到k个盒子中的情况数”
然后将上面的思路化为递归式:
设f(n, k)代表将n个小球放到k个盒子中且没有空盒的情况,那么f(n, k) = f(n-1, k-1) + f(n-k, k)
而当k=1时只有1种方法(小球全部放进1个盒子)
// luogu-judger-enable-o2
/*******************
 * problem:      P1025 数的划分.
 * user ID:      63720.
 * user name:    航空信奥.
 * time:         2018-05-14.
 * mode:         C++.
 * upload place: Luogu.
*******************/
#include <stdio.h>
#include <iostream>
#define ll long long
using namespace std;
ll f(int n, int k)
{
    if (k <= 0 || n < k)
        return 0;                           //* 有空盒或有球放不下去
    if (n == k)
        return 1;                           //* 一个盒子放一个球
    else
        return f(n-1, k-1) + f(n-k, k);     //* 递归求解
}
int main() // 完美主程序
{
    ll n, k;
    cin >> n >> k;
    cout<< f(n, k);
    return 0;
}
不加O2,1132ms,差点挂。
递归转递推(优化,0ms)
// luogu-judger-enable-o2
/*******************
 * problem:      P1025 数的划分.
 * user ID:      63720.
 * user name:    航空信奥.
 * time:         2018-05-14.
 * mode:         C.
 * upload place: Luogu.
*******************/
#include <stdio.h>
const int MaxK = 6 + 1;
const int MaxN = 200 + 1;
/*******************
 * 0ms优化 :
 * 采用动态规划的思想,将递归转化为二维数组模式
 * 注意开数组时,最好把空间大小+1
*******************/
int main()
{
    int n, k;
    scanf("%d%d", &n, &k);
    int ans[MaxK][MaxN] = {0};
    ans[0][0] = 1;
    //f(n, k) = f(n-1, k-1) + f(n-k, k)
    for (int i = 1; i <= k; i++)
        for (int j = i; j <= n; j++)
            ans[i][j] = ans[i - 1][j - 1] + ans[i][j - i];
    printf("%d", ans[k][n]);
}
洛谷 题解 P1025 【数的划分】的更多相关文章
- 洛谷——P1025 数的划分
		P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ... 
- 【dfs】p1025 数的划分
		P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ... 
- P1025 数的划分
		P1025 数的划分f[i][j]表示把数i分成j份的方案数,分成两种情况,第一种是最小值是1,另一种是最小值不是1,对于不是1的情况,先都放一个1,那么f[i][j]=f[i-1][j-1]+f[i ... 
- 洛谷P1102 A-B数对
		洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ... 
- P1025 数的划分——简单题刷傻系列
		P1025 数的划分 学傻了,学傻了,什么dp搜索什么啊: #include<cstdio> #include<cstring> #include<algorithm&g ... 
- 洛谷P1288 取数游戏II(博弈)
		洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ... 
- P1025数的划分
		P1025数的划分 #include <iostream> using namespace std; int n,k; int cnt; void dfs(int s,int step,i ... 
- 【题解】洛谷P3166 [CQOI2014] 数三角形(组合+枚举)
		洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的 ... 
- 洛谷 题解 UVA572 【油田 Oil Deposits】
		这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ... 
随机推荐
- Mysql 开启远程连接服务
			Mysql 开启远程连接服务 修改要远程访问的那个用户的 host 为 % use mysql; insert into user (host, user, password) values('%', ... 
- nyoj  596-谁是最好的Coder  (greater, less)
			596-谁是最好的Coder 内存限制:64MB 时间限制:1000ms 特判: No 通过数:15 提交数:28 难度:0 题目描述: 计科班有很多Coder,帅帅想知道自己是不是综合实力最强的co ... 
- python中的__str__和__repr__方法
			如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class A(object): def __init__(self,name,age): self.name=name se ... 
- cglib测试例子和源码详解
			目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写 ... 
- sqlalchemy 源码分析之create_engine引擎的创建
			引擎是sqlalchemy的核心,不管是 sql core 还是orm的使用都需要依赖引擎的创建,为此我们研究下,引擎是如何创建的. from sqlalchemy import create_eng ... 
- 《HelloGitHub》第 44 期
			兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ... 
- Docker (一) 安装 Oracle18c
			通过Docker 安装 Oracle18c 1.拉取 oracle18c 镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhengqing/orac ... 
- moco框架应用一步到位
			1. Moco部署 5.1 运行环境 ü Java运行环境 ü moco-runner-0.11.0-standalone.jar jar包: Windows Java环境配 ... 
- 我的 Input框 不可能这么可爱
			<input /> 标签是我们日常开发中非常常见的替换元素了,但是最近在刷 whattwg 跟 MDN 的时候发现 跟 <input /> 有很多相关的属性,选择器都没怎么用过 ... 
- 程序员的算法课(11)-KMP算法
			版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ... 
