【动态规划】整数划分及其变种

简介: 笔记

1. 整数划分【不可重复,考虑顺序,完全背包】


900. 整数划分20.png

思路

题意转为完全背包求解。21.png


代码

int n; cin >> n;
for (int i = 0; i <= n; i++) f[i][0] = 1;
for (int i = 1; i <= n; i++){
    for (int j = 1; j <= n; j++) {
        f[i][j] = f[i - 1][j] % mod;
        if(j >= i) f[i][j] = (f[i - 1][j] + f[i][j - i]) % mod;
    }
}
cout << f[n][n] << endl;
  • 压缩一维
g[0] = 1;
for (int i = 1; i <= n; i++)
    for (int j = i; j <= n; j++) 
        g[j] = (g[j] + g[j - i]) % mod;
cout << g[n] << endl;

2. 鸣人的影分身【可重复,不考虑顺序,>=0】


1050. 鸣人的影分身


22.png


思路

可重复型 & 二维费用完全背包


题意:n 拆成 m 份的方案数,换句话说就是用 m 个数拼成 n的方案数。


每个数可以选多次(≥ 0 \geq 0≥0),就是完全背包问题,受体积和份数限制,即二维费用完全背包。


f [ i ] [ j ]: 表示体积为 i 时,划分 j 份的方案数。

23.png

代码

cin >> n >> m;
f[0][0] = 1;
for (int i = 0; i <= n; i++) 
    for (int j = 1; j <= m; j++) {
        f[i][j] = f[i][j - 1];
        if (i >= j) f[i][j] = (f[i][j - 1] + f[i - j][j]) % mod; 
    }
cout << f[n][m] << endl;

3. 数的划分【可重复,不考虑顺序,>=1】


[编程题]数的划分

24.png



思路

与上题不同的是,分的每份都不能为空,即 ≥ 1 \geq 1≥1。


f[i][j]: 表示体积为 i 时,划分 j 份的方案数。25.png

代码

int n, m; cin >> n >> m;
vector<vector<int>> f(n + 1, vector<int>(m + 1, 0)); 
f[0][0] = 1;
const int mod = 1e9 + 7;
for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i && j <= m; j++) {
        f[i][j] = (f[i - 1][j - 1] + f[i - j][j]) % mod;
    }
}
cout << f[n][m] << endl;


相关文章
|
缓存 分布式计算 负载均衡
构建高效可扩展的后端系统架构
【2月更文挑战第9天】本文将介绍如何构建一种高效可扩展的后端系统架构,以满足不断增长的用户需求和应对大规模并发请求。我们将讨论关键的技术要点,包括分布式计算、负载均衡、缓存和数据库优化等,帮助读者在设计和开发后端系统时做出明智的决策。
253 7
|
传感器 机器学习/深度学习 算法
【滤波跟踪】基于扩展卡尔曼滤波器实现 IMU 和 GPS 数据计算无人机的姿态附matlab代码
【滤波跟踪】基于扩展卡尔曼滤波器实现 IMU 和 GPS 数据计算无人机的姿态附matlab代码
|
存储 安全 大数据
【云计算与大数据技术】云交付模型、云部署模型、云计算优势与挑战、应用的讲解(超详细必看)
【云计算与大数据技术】云交付模型、云部署模型、云计算优势与挑战、应用的讲解(超详细必看)
1876 0
|
SQL 存储 索引
mysql5.7 查看表结构基本语句之describe
前言废话不多说直接上 1.查看表结构基本语句describedescribe/desc语句可以查看表字段信息,其中包括:地段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:describe 表名;或者desc表名; 例:分别使用describe和desc查看表tb_emp8和表tb_emp7的表结构。
2073 0
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1211 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1173 87

热门文章

最新文章