我是靠谱客的博主 不安水壶,最近开发中收集的这篇文章主要介绍【例题2-5】整数的划分,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

3 = 1 + 1 +1
3 = 2 + 1
3 = 3
则q(n,m)表示n的划分中最大值不超过m的方案书,q(3,3)=3.

【题解】


q(n,m)=q(n-m,m)+q(n,m-1);//放一个m在开头+不放m在开头然后尝试<=m-1
q(0,m)=1; ①
n<0 || m<=0 ->f(n,m)=0 ②
①在②前。

【代码】

#include <cstdio>
#define ll long long
using namespace std;
//计算n的划分个数,其中最大数不超过m
ll q(int n,int m){
if (n==0) return 1;//0的划分只有一个,那就是它本身
if (n<0 || m<=0) return 0;
if (n<m) return q(n,n);
return q(n-m,m) + q(n,m-1); //放一个m在开头+不放m了
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
printf("%lldn",q(n,m));
return 0;
}

最后

以上就是不安水壶为你收集整理的【例题2-5】整数的划分的全部内容,希望文章能够帮你解决【例题2-5】整数的划分所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部