NYOJ90-整数划分,经典递归思想~~
来源:互联网 发布:cms始源勇者王 编辑:程序博客网 时间:2024/06/16 13:18
整数划分
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 将正整数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+1+1,2+1+1+1+1;
1+1+1+1+1+1。- 输入
- 第一行是测试数据的数目M(1<=M<=10)。以下每行均包含一个整数n(1<=n<=10)。
- 输出
- 输出每组测试数据有多少种分法。
- 样例输入
16
- 样例输出
11
其实看到这种题第一想到的是打表,但却发现不了规律,,,只好用递归做了,不过递归思想也挺好理解的~~
有兴趣去看看这位大神点击打开链接的博客,,解释完全彻底;
来看代码:
#include<bits/stdc++.h>using namespace std;int fun(int n,int m)//划分中最大值为m的所有可能情况的个数;{ if(n==1||m==1) return 1; else if(n<m) return fun(n,n);//题目要求正整数; else if(n==m) return (1+fun(n,m-1));//以n为最大值得划分只有{n}一个; else return (fun(n-m,m)+fun(n,m-1));//划分中含有m和不含m的情况,含有m则另一部分为n-m,不含m则最大值为m-1的划分;}int main(){ int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d\n",fun(n,n)); } return 0;}
0 1
- NYOJ90-整数划分,经典递归思想~~
- NYOJ90 整数划分(经典递归和dp)
- nyoj90 整数划分
- NYOJ90 整数划分 【深搜】
- NYOJ90-整数划分
- NYOJ90整数划分
- nyoj90整数划分
- nyoj90 整数划分
- NYOJ90整数划分
- nyoj90整数划分(dp)
- 递归经典整数划分问题
- 经典算法2:递归求解整数划分
- 递归经典应用(整数的划分)
- nyoj90 整数拆分(递归,背包两种解法)
- 整数划分(递归)
- 整数划分《递归法》
- 递归实现整数划分
- 递归之整数划分
- ZOJ 3777Problem Arrangement(状压DP)
- C++向量容器vector的使用
- 《基于子空间的人脸识别》文献笔记
- 如何遍历memcache
- cf#161-D-Cycle in Graph- dfs
- NYOJ90-整数划分,经典递归思想~~
- ssh服务器
- PHP memcache实现消息队列实例
- RDD动态转换成DataFrame
- boost基础——随机数生成器
- (语法)一个求大小的程序分析
- PHP共享内存实现的消息队列
- Android群英传笔记——第四章:ListView使用技巧
- 简单工厂模式与工厂方法模式区别