4117:简单的整数划分问题
总时间限制: 100ms 内存限制: 65536kB
描述
将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。
正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。
输入
标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。
输出
对于每组测试数据,输出N的划分数。
样例输入
5
样例输出
7
提示
5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1

问题链接:Bailian4117 简单的整数划分问题
问题描述:(略)
问题分析
    这个问题的关键是递推式,这里就不详细说明了。另外用记忆化递归实现速度上是快。
    同样是递推式,另外一个版本,代码更加简洁一些。
程序说明:(略)
参考链接:HDU1028 Ignatius and the Princess III【整数划分+记忆化递归】
题记:(略)

AC的C语言程序如下:

/* HDU1028 Ignatius and the Princess III */#include <stdio.h>
#include <string.h>#define N 160
long long a[N + 1][N + 1];long long ways(int m, int n)
{if(a[m][n])return a[m][n];else {if(m == 0 || n == 1)return a[m][n] = 1;else if(n > m)return a[m][n] = ways(m, m);elsereturn a[m][n] = ways(m - n, n) + ways(m, n - 1);}
}int main(void)
{memset(a, 0, sizeof(a));int n;while(~scanf("%d", &n))printf("%lld\n", ways(n, n));return 0;
}

AC的C语言程序如下:

/* Bailian4117 简单的整数划分问题 */#include <stdio.h>
#include <string.h>#define N 50
int c[N + 1][N + 1];int ways(int m, int n)
{if(c[m][n] >= 0)return c[m][n];else {if(m == 0)return c[m][n] = 1;else if(n == 0)return c[m][n] = 0;else if(n <= m) {if(c[m - n][n] < 0)c[m - n][n] = ways(m - n, n);if(c[m][n - 1] < 0)c[m][n - 1] = ways(m, n - 1);return c[m][n] = c[m - n][n] + c[m][n - 1];} elsereturn c[m][n - 1] >= 0 ? c[m][n - 1] : (c[m][n - 1] = ways(m, n - 1));}
}int main(void)
{memset(c, 0xFF, sizeof(c));int n;while(~scanf("%d", &n)) {printf("%d\n", ways(n, n));}return 0;
}

Bailian4117 简单的整数划分问题【整数划分+记忆化递归】相关推荐

  1. JSK-4 简单斐波那契【基础+打表+记忆化递归】

    简单斐波那契 斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加.用数学公式定义斐波那契数列则可以看成如下形式: F0=0 F1=1 Fn=Fn−1​+Fn ...

  2. 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)

    70. 爬楼梯(剑指 Offer 10- II. 青蛙跳台阶问题) 递归(英语:Recursion),是指在函数的定义中使用函数自身的方法.有意义的递归通常会把问题分解成规模缩小的同类子问题,当子问题 ...

  3. HDU2018 母牛的故事【递推+记忆化递归】

    母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  4. LeetCode 329. 矩阵中的最长递增路径(记忆化递归)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...

  5. HDU2569 彼岸【打表+记忆化递归】

    彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  6. POJ1664 放苹果【递推+记忆化递归】

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35209   Accepted: 21792 Description ...

  7. 蜜蜂爬蜂房(记忆化递归)

    有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一行是一个整数N,表示测试实例的个数,然后 ...

  8. [剑指offer][JAVA]面试题第[10-1]题[斐波那契数列][动态规划][记忆化递归]

    [问题描述][中等] 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N ...

  9. LeetCode 87. 扰乱字符串(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...

最新文章

  1. 阮一峰网络日志 第41期 2019年01月25日
  2. chrome调式工具
  3. MYSQL入门基础知识
  4. 微信小程序获取openid(用户唯一身份识别)
  5. VS Code, VS 2022 使用正则表达式进行替换
  6. 《朱子治家格言》 清•朱柏庐
  7. 用管家婆软件记录公司的管理费用
  8. java 运行 对象_java实例对象的编译时类型和运行时类型
  9. 基于数据挖掘的智能停车场运营数据分析系统
  10. CEYE平台使用简介
  11. windows 的cmd设置代理方法
  12. MPTCP iperf 发包方式
  13. 【1071】C语言程序设计教程(第三版)课后习题6.9
  14. vs调试时报错:变量已被优化掉,因而不可用
  15. 企业微信私域流量运营应当掌握的“工具”
  16. P3152 正整数序列
  17. 猜成语游戏c语言代码,拼音首字母猜词语游戏 快乐大本营的一个游戏,给了些拼音的首字母,然后组词,让方块移到对面,这个游戏叫什么名字?...
  18. 图的创建(邻接矩阵和邻接表)
  19. 阿里云苦尽甘来的历程
  20. 超顺磁氧化铁T1磁共振成像对比剂/高单分散超小(小于4 nm)铁氧体纳米颗粒/pDHPMA-Cy5.5-DOTA-Gd

热门文章

  1. c语言贪吃蛇源代码window32,Win32贪吃蛇源代码。背景非常简单
  2. 怎么做游戏打击感浅述
  3. PHP连接MYSQL出现乱码的原因与解决方法
  4. Java aio(异步网络IO)初探
  5. android:id=@android:id/list,Logcat错误 - 内容必须有一个ListView的id属性是'android.R.id.list'...
  6. android 分割字符 指定长度_[Android]TextUtils.ellipsize()截取指定长度字符串(附图文混排)...
  7. 小程序 css框架,微信小程序_如何支持Less等CSS框架开发
  8. latex 中表格怎么指定编号_在医学论文中,应用表格怎么用才是正确的?
  9. 机器学习代码实战——梯度下降(gradient descent)
  10. Python基础——while循环语句