【分治算法】【Python实现】整数划分问题

### 文章目录

  • [@[toc]](#文章目录 @[toc] 问题描述 分治算法 Python实现)
  • [问题描述](#文章目录 @[toc] 问题描述 分治算法 Python实现)
  • [分治算法](#文章目录 @[toc] 问题描述 分治算法 Python实现)
  • [Python实现](#文章目录 @[toc] 问题描述 分治算法 Python实现)

个人主页:丷从心·

系列专栏:分治算法

学习指南:算法学习指南


问题描述

  • 将正整数 n n n表示成一系列正整数之和, n = n 1 + n 2 + ⋯ + n k ( n 1 ≥ n 2 ≥ ⋯ ≥ n k ≥ 1 , k ≥ 1 ) n = n_{1} + n_{2} + \cdots + n_{k} (n_{1} \geq n_{2} \geq \cdots \geq n_{k} \geq 1 , k \geq 1) n=n1+n2+⋯+nk(n1≥n2≥⋯≥nk≥1,k≥1)
  • 正整数 n n n的这种表示称为正整数 n n n的划分,正整数 n n n的不同的划分个数称为正整数 n n n的划分数,记为 p ( n ) p(n) p(n)

分治算法

  • 在正整数 n n n的所有划分中,将最大加数 n 1 n_{1} n1不大于 m m m的划分个数记作 q ( n , m ) q(n , m) q(n,m),可以建立 q ( n , m ) q(n , m) q(n,m)的递归关系

q ( n , m ) = { 1 , n = 1 , m = 1 q ( n , n ) , n < m q ( n , n − 1 ) + 1 , n = m q ( n , m − 1 ) + q ( n − m , m ) , n > m > 1 q(n , m) = \begin{cases} 1 , & n = 1 , m = 1 \\ q(n , n) , & n < m \\ q(n , n - 1) + 1 , & n = m \\ q(n , m - 1) + q(n - m , m) , & n > m > 1 \end{cases} q(n,m)=⎩ ⎨ ⎧1,q(n,n),q(n,n−1)+1,q(n,m−1)+q(n−m,m),n=1,m=1n<mn=mn>m>1


Python实现

python 复制代码
def integer_partition(n, m):
    if n < 1 or m < 1:
        return 0

    if n == 1 or m == 1:
        return 1

    if n < m:
        return integer_partition(n, n)

    if n == m:
        return integer_partition(n, n - 1) + 1

    return integer_partition(n, m - 1) + integer_partition(n - m, m)


n = 6

res = integer_partition(n, n)

print(f'The number of partitions for {n} is: {res}')
shell 复制代码
The number of partitions for 6 is: 11

相关推荐
测试19984 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽7 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
前端若水8 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
涛声依旧-底层原理研究所9 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer
csdn_aspnet9 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
fantasy_arch9 小时前
pytorch人脸匹配模型
人工智能·pytorch·python
熊猫_豆豆9 小时前
广义相对论水星近日点进动完整详细数学推导
python·天体·广义相对论
web3.088899910 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
AI算法沐枫10 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归
X1A0RAN11 小时前
解决Pycharm中部分文件或文件夹被隐藏不展示问题
ide·python·pycharm