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

注意:

  • 拆分方案不考虑顺序;
  • 至少拆分成 2 个数的和。

求拆分的方案数 mod2147483648 的结果。

输入格式

一个自然数 N。

输出格式

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

数据范围

1≤N≤4000

输入样例:

7

输出样例:

14

三维  超时

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL  dp[N][N] , v[N] ;
int n ,  m ;int main()
{cin >> n ;dp[0][0] = 1;for(int i = 0 ; i <= n ; i++ ) v[i] = i;for(int i = 1 ; i < n ; i++ ){for(int j = 0 ; j <= n ; j++ ){for(int k = 0 ; k * v[i] <= j ; k++ ){dp[i][j] += dp[i-1][j - k * v[i]] ;dp[i][j] %= mod ;}}}cout<< dp[n-1][n] << endl;return 0;
}

二维 超时

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL  dp[N][N] , v[N] ;
int n ,  m ;int main()
{cin >> n ;dp[0][0] = 1;for(int i = 0 ; i <= n ; i++ ) v[i] = i;for(int i = 1 ; i < n ; i++ ){for(int j = 0 ; j <= n ; j++ ){dp[i][j] = dp[i-1][j];dp[i][j] += dp[i][j - v[i]] ;dp[i][j] %= mod ;}}cout<< dp[n-1][n] << endl;return 0;
}

一维

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL  dp[N]  ;
int n ,  m ;int main()
{cin >> n ;dp[0] = 1;for(int i = 1 ; i < n ; i++ ){for(int j = i ; j <= n ; j++ ){dp[j] += dp[j - i] ;dp[j] %= mod ;}}cout<< dp[n] << endl;return 0;
}

279. 自然数拆分 完全背包问题相关推荐

  1. 自然数拆分(完全背包问题求方案数)

    给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复. 注意: 拆分方案不考虑顺序: 至少拆分成2个数的和. 求拆分的方案数 mod 2147483648的结果. 输入格式 ...

  2. [JOYOI] 自然数拆分Lunatic版

    题目背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强.题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复.输入格式 输入只有一个整 ...

  3. 再练动态规划——(2)自然数拆分Lunatic版

    自然数拆分Lunatic版 题目描述 输入自然数 nnn ,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数 nnn ,表示待拆分的自然数 nnn . 0< ...

  4. tyvj1172 自然数拆分Lunatic版

    背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强. 描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数n ...

  5. 【背包dp】自然数拆分Lunatic版

    Tyvj 1172 自然数拆分Lunatic版 题意:给定一个自然数n(1<= n <= 4000), 要求把自然数n拆分成n个正整数相加的情况(正整数可以重复出现, 但顺序不同仍视为同一 ...

  6. CH5202 自然数拆分Lunatic版【完全背包】

    5202 自然数拆分Lunatic版 0x50「动态规划」例题 描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结 ...

  7. TYVJ1172 自然数拆分Lunatic版 - 背包DP[完全背包]

    TYVJ1172 自然数拆分Lunatic版 传送门 思路: 类比TYVJ1096 数字组合 , 本题的数字可以重复使用,所以是一个完全背包模型.\(f[i,j]\)表示当前选到第\(i\)类数字凑成 ...

  8. 自然数拆分问题的解法与感悟(C++)

    好吧,最近准备算法与程序设计竞赛(qwq我发现这个比赛的时候就离比赛时间没几天了好难),开始刷题了,刷到了这个自然数拆分的问题的问题,题目相对来说不难,但是对我来说还是有一些难度的,下面我就来说说这道 ...

  9. TVYJ1172 自然数拆分Lunatic版(完全背包问题)

    测试地址:链接 题意描述:给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结果.1≤N≤4000. 输入格式: 一个整数 ...

最新文章

  1. .NET企业级应用架构设计系列之应用服务器
  2. MEMS为何独领风骚?看完这篇秒懂!
  3. A+B Problem 详细解答 (转载)
  4. Angular动态表单生成(八)
  5. 为项目添加autoprefixer
  6. mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定
  7. linux top 命令可视化_Linux 使用 top 命令查看系统的运行情况
  8. spark的异步消息总线LiveListenBus
  9. Docker入门系列(一):目标和安排
  10. 战争论 —— 蓝田之战
  11. Codeforces Round #449 (Div. 2) B Chtholly's request (预处理)
  12. 谷歌浏览器显示弹框登陆代理解决方法
  13. 百练2967:特殊日历计算题解
  14. 在SCI-Hub上下载国外论文
  15. ExcelVBA之InputBox方法
  16. python 编程控制键盘和鼠标
  17. 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
  18. 完美解决小米随身wifi创建网络失败
  19. 20年3月27日,Github被攻击。我的GitPage博客也挂了,紧急修复之路,也教会你搭建 Jekyll 博客!
  20. 上交计算机考研科目,2020上海交通大学计算机考研大纲

热门文章

  1. 前端将pdf转为图片,拿来即用
  2. throw函数的用法
  3. java接入支付宝手机网站支付
  4. DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks
  5. 大盘点 | 十大即插即用的涨点神器!
  6. 阿里云 IP 地理位置库(淘宝IP库)实践(前篇)
  7. 中标普华的安装与root登录
  8. VB6读取INI文件
  9. 爱奇艺RND框架技术探索——架构与实现
  10. 天津大学计算机科学专业排名,2019天津大学专业排名