代码编织梦想

5610170b29dd39385def3c30185f25f2.png

用最大为m凑出n的数量

79df69f9af27b1ec62f98ad44b8a0446.png
7dc3de1f7d7289e0a708b1aa3a976c63.png

图解:

49a139621834b086d304aa2e945b134c.jpeg

代码如下:

#include <bits/stdc++.h>
using namespace std;

int f(int n,int m)
{
    if(n==1||m==1) return 1;          //递归出口,f(1,m)=1,f(n,1)=1,1个1或者n个1 
    else if(m>n) return f(n,n);         //f(n,m)=f(n,n) 
    else if(n==m) return f(n,n-1)+1; //f(n,n)=1+f(n,n-1) 
    else return f(n,m-1)+f(n-m,m);   //f(n,m)=f(n,m-1)+f(n-m,m) 
}

int main() {
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%d\n",f(n,n)); //n的m划分的个数f(n,m) 
    } 
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_56774050/article/details/129484093

11088 整数划分的扩展问题(递归,分治)-爱代码爱编程

11088 整数划分的扩展问题 时间限制:1000MS  内存限制:65535K 提交次数:0 通过次数:0 题型: 编程题   语言: C++;C;VC;JAVA Description 下面有整数划分问题扩展出的多个题例: (1)正整数n划分为若干正整数之和,最大加数不超过m的划分数 (2)正整数n划分为不超过m个正整

整数划分问题(c语言递归)_奔跑的小仙女的博客-爱代码爱编程_整数划分的递归实现算法c语言

题目: (1)将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1,则n的这种表示称为正整数n的划分。 (2)求正整数n的不同划分个数? (3)例如正整数6有如下11种不同的划分:

递归分治--整数划分-爱代码爱编程

题目描述: 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。 例如正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+

递归实现整数划分-爱代码爱编程

递归思想 递归是算法设计中的一种基本而重要的算法。递归方法通过函数调用自身将问题转化为本质相同但规模较小的子问题,是分治策略的具体体现。 不多废话,直接上故事 ->从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,老和尚讲:从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,老和尚讲:…… 上面的故事本身是递归的,用递归算法描述: v

递归与分治策略-------整数划分-爱代码爱编程

- 任何一个可以用计算机求解的问题所需的计算时间都与其规模n有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。- 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。- 如果原问题可分割成k个子问题(1<k≤n),且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行

整数划分问题(C语言,递归)-爱代码爱编程

整数划分问题:将正整数n表示成一系列的整数的和,n=n1+n2+…+nk(n1>=n2>=n3…nk>=1,k>=1)正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分数,记为p(n). #include<stdio.h> //将最大加数n1不大于m的划分的个数记作q(n,m) int q(

分治法——整数划分问题-爱代码爱编程

分治法——整数划分问题 问题:将给定正整数n表示成一系列正整数之和n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。求正整数n的不同划分个数p(n)。 思路分析——添加自变量,寻找递归关系 有些问题本身都具有比较明显的递归关系,因而容易用递归函数直接求解。而有些问题递归关系却不明显。 在本例中,如果设p(n)为正整数n的划分数,则难以

整数划分的递归实现算法c语言,经典算法2:递归求解整数划分-爱代码爱编程

#include #include int intPart( int n,int m ) ; void main() { int num ; int partNum = 0 ; printf("Please input an integer:/n") ; scanf("%d",&num) ; partNum = intPa

整数划分的递归实现算法c语言,整数划分算法原理与实现-爱代码爱编程

整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1 1 + 1 + 1 + 1 +

正整数划分递归C语言算法,整数划分问题(递归法)-爱代码爱编程

将一个整数n表示成一系列正整数之和,n=n1+n2+n3...+nk(其中,n1>=n2>=n3...>=nk>=1,k>=1) 正整数n的这种表示称为正整数n的一个划分,正整数n的不同划分个数称为正整数n的划分数,记作p(n) 如,6有11种不同划分,所以p(6)=11 6; 5+1; 4+2,4+1+1;

整数划分问题的递归算法-c语言,简单的整数划分问题(递归)-爱代码爱编程

描述 将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。 输入 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)

整数划分c语言程序递归,递归整数划分-爱代码爱编程

递归实现整数划分 目录 递归实现整数划分 1.原理 2.Python实现 3.C实现 1.原理 拿6为例,可划分为: 6 5+1 4+2 4+1+1 3+3 3+2+1 3+1+1+1 2+2+2 2+2+1+1 2+1+1+1+1 1+1+1+1+1+1 共11种情况。 我们拿函数d(n,m)为例描述划分状态。

算法设计与分析——分治与递归——整数划分问题-爱代码爱编程

将正整数n表示为一系列正整数之和, n=n1+n2+n3+n4+......+nk (其中,n1>=n2>=n3>=n4........>=nk>0,k>=1) 正整数n的这种表示成为正整数n的划分。正整数n的不同划分个数成为正整数n的划分数,记作p(n)。 例如,正整数6有如下11种划分: 6;

递归与分治——整数划分问题-爱代码爱编程

所谓整数划分,是指把一个正整数n写成为 n = n 1

算法设计值循环与递归(完数问题,鞍点问题,整数划分,矩阵下三角有规律排列)_还有重名的吗的博客-爱代码爱编程

完数 问题描述 编算法找出1000以内所有完数 完全数(Perfect number)。如果一个数恰好等于它的真因子之和,则称该数为“完全数” 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约

java数据结构与算法-爱代码爱编程

1.前言 什么是排序呢?排序就是将一系列物品按照某项标准进行位置的变换。比如,对于数组arr[] = {10,4,2,8,9,20} 来说,如果从小到大排序就是{2,4,8,9,10,20},从大到小排序就是{20,10,9,8,4,2}。 对于Java来说,如果你只需要实现排序的目标,那么你只需要用下面这段代码就可以了: package