nyoj_176_整数划分(二)_201404261715
整数划分(二)
- 描述
-
把一个正整数m分成n个正整数的和,有多少种分法?
例:把5分成3个正正数的和,有两种分法:
1 1 3
1 2 2
- 输入
- 第一行是一个整数T表示共有T组测试数据(T<=50)
每组测试数据都是两个正整数m,n,其中(1<=n<=m<=100),分别表示要拆分的正数和拆分的正整数的个数。 - 输出
- 输出拆分的方法的数目。
- 样例输入
-
2
5 2
5 3 - 样例输出
-
2
2 - 来源
- [张云聪]原创
- 上传者
- 张云聪
- 在整数划分(一)的基础上改编的,整数划分(一)里有详解:http://www.cnblogs.com/xl1027515989/p/3603533.html
- 针对此题,方法和整数划分(一)类似:
-
首先 定义f ( i , j )为整数 i 分成 j 个整数 的情况
经过分析可得f(i, j )可转化为两个部分:
一: 假设 分成的 j 个整数中 不包含1。。那么 此时 f (i-j,j)就是这部分的总情况,既然想让他不包含1,就先将j个整数都分为1,此时i变为i-j,再将i分为j个整数,这j个整数再加上原先分的1,就肯定不会再有1出现了。如果i-j<j的话,f (i-j,j)的值为0
二: 假设分成的j个整数至少有一个1。。那么此时f(i-1,j-1)代码如下(一):
#include <stdio.h>
int f(int m,int n)
{
if(m==n||n==)
return ;
else if(m<n)
return ;
else if(m>n)
return f(m-,n-)+f(m-n,n);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",f(m,n));
}
return ;
}
//AC
//首先 定义f ( i , j )为整数 i 分成 j 个整数 的情况
//经过分析可得f(i, j )可转化为两个部分:
//一: 假设 分成的 j 个整数中 不包含1。。那么 此时 f (i-j,j)就是这部分的总情况,既然想让他不包含1,就先将j个整数都分为1,此时i变为i-j,再将i分为j个整数,这j个整数再加上原先分的1,就肯定不会再有1出现了。如果i-j<j的话,f (i-j,j)的值为0
//二: 假设分成的j个整数至少有一个1。。那么此时f(i-1,j-1)
//代码如下(二):
#include <stdio.h>
int s[][];
int f(int m,int n)
{
if(s[m][n]!=)
return s[m][n];//用数组保存已处理过的数据节约时间
if(m==n||n==)
return ;
else if(m<n)
return ;
else if(m>n)
return s[m][n]=f(m-,n-)+f(m-n,n);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",f(m,n));
}
return ;
}
//AC
nyoj_176_整数划分(二)_201404261715的更多相关文章
- 递归---NYOJ-176 整数划分(二)和NYOJ-279队花的烦恼二
这道题目的递归思想和第一个题差不多, 主要思想是:func(n, m)的作用是将n划分为m个. 1. 如果n < m 的时候肯定是不能划分的,所以就返回0 2. 如果m = 1 或者 n = m ...
- NYOJ-571 整数划分(三)
此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...
- 整数划分 Integer Partition(二)
本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中 m1 m2 ... mi连续,比如5=1+4就不符合 ...
- 整数划分 Integer Partition(一)
话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...
- POJ1664(整数划分)
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 30894 Accepted: 19504 Description ...
- 大概是:整数划分||DP||母函数||递推
整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...
- hdu-2709整数划分 技巧
整数划分变形,由2^k组成. 整数划分中一个节约内存的技巧,平时我们使用dp[i][j]维护用不大于j的数组合成i的方案数,所以必须dp[i-j][j]->dp[i][j].这样就需要二位,如果 ...
- poj1664 放苹果(DPorDFS)&&系列突破(整数划分)
poj1664放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33661 Accepted: 20824 Desc ...
- Codeforces 1326F2 - Wise Men (Hard Version)(FWT+整数划分)
Codeforces 题目传送门 & 洛谷题目传送门 qwq 这题大约是二十来天前 AC 的罢,为何拖到此时才完成这篇题解,由此可见我是个名副其实的大鸽子( 这是我上 M 的那场我没切掉的 F ...
随机推荐
- JSR-303原生支持的限制
@Null: 限制只能为null@NotNull: 限制必须不为null@AssertFalse: 限制必须为false@AssertTrue: 限制必须为true@DecimalMax(value) ...
- "言官误国"
"言官误国" 之前读<明朝那些事儿>的时候,了解到了一个全新的概念,确切的说与之前的印象完全不符合的概念:言官.之前我印象中的言官都是魏征那样的人,为国为民.冒死直谏等 ...
- 掌握Spark机器学习库-07.6-线性回归实现房价预测
数据集 house.csv 数据概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.fea ...
- iOS Programming View Controllers 视图控制器
iOS Programming View Controllers 视图控制器 1.1 A view controller is an instance of a subclass of UIVi ...
- Sql Server 2012 事务复制遇到的问题及解决方式
1.订阅服务器提示:作业失败.无法确定所有者 WIN-01Q6JB46CHV\Administrator(拥有作业XXX)是否有服务器访问权限(原因:无法获取有关 Windows NT 组/用户'WI ...
- Python中yield函数浅析
带有yield的函数在Python中被称之为generator(生成器),下面我们将使用斐波那契数列来举例说明下该函数:(环境是在Python3.x下) 如何生成斐波那契数列: 斐波那契(Fibon ...
- expdp dblink
客户端创建dblik create public database link [link_name] connect to {username} identified by "{passwo ...
- spring springmvc 获取所有url
@Autowired private RequestMappingHandlerMapping handlerMapping; @Test public void getAllApi() { Map& ...
- windows 下安装 RabbitMQ
一.安装 RabbitMQ 前需要先安装 Erlang http://www.erlang.org/downloads 下下载对应版本的安装文件进行安装. 安装完成后配置环境变量: ERLANG_HO ...
- gdb 基础
版权:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html 1. gdb 调试利器 GDB是一个由GNU开源组织发布的.UN ...