朝题夕解之动态规划(7)

简介: 朝题夕解之动态规划(7)

题目描述(题目难度:简单)


给定一个自然数 N NN,要求把 N NN 拆分成若干个正整数相加的形式,参与加法运算的数可以重复。


注意:

拆分方案不考虑顺序;

至少拆分成 2 个数的和。

求拆分的方案数 m o d modmod 2147483648 的结果。


输入格式

一个自然数 N。


输出格式

输入一个整数,表示结果。


数据范围

1≤N NN≤4000

输入样例:

7

输出样例:

14

来源:acwing

原题传送门


解题报告


题意解读


对于样例中的7。

两个数相加的情况:

1+6

2+5

3+4


这里有3个

三个数相加的情况

1+1+5

1+2+4

1+3+3

2+2+3


这里有4个

四个数相加的情况

1+1+1+4

1+1+2+3

1+2+2+2


这里有3个

五个数相加的情况

1+1+1+1+3

1+1+1+2+2


这里有2个

六个数相加的情况


1+1+1+1+1+2


这里有1个

七个数相加的情况


1+1+1+1+1+1+1

这里有1个


DP分析

微信图片_20221018145711.jpg

这里是的最后状态转移方程的由来是省略了一定步骤的,假如看着有点迷糊的小伙伴可以看看这这篇文章中对完全背包的解读


参考代码

//完全背包求方案数问题
//把1~n-1个数看成n-1种物品。 物品可以无限用,背包容积为n,用f[j]表示和为j的方案数
#include <iostream>
#include <algorithm>
using namespace std;
//int的范围是 -2,147,483,648 到2,147,483,647
typedef long long LL;
const int N = 4010;
const LL mod = 2147483648;
LL f[N];//f[i][j]只从前i个物品中选择,和为j的方案数。
int main()
{
    int n;
    cin >> n;
    //初始化处理0这个数的和的方案数是1
    f[0] = 1;
    for(int i = 1;i < n;i++)
        //为了防止重复计算,要从i开始
        for(int j = i;j <= n;j++) 
        f[j] = (f[j] + f[j-i]) % mod;//这里直接优化为一维的形式了,因为这个题中每个数是没有价值的,就忽略价值w[i]
    cout << f[n] << endl;
    return 0;
}
相关文章
|
前端开发 Java API
6:RestFul API-Java Spring
6:RestFul API-Java Spring
213 0
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
352 91
|
10天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
876 156
|
3天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
259 156
|
4天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
11天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。