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 ...
随机推荐
- 启动Windows PowerShell ISE
Windows Server 2008 R2 环境下,启动PoserShell ISE方法: 方法1:在cmd.exe控制台或运行框中,输入 powershell_ise.exe 执行即可. 方法2: ...
- javascript中闭包与作用域的理解
很多js的框架与插件编写都用到了闭包,所以,阅读和掌握闭包很有必要.最近学习vue框架时,经常会猜想很多功能的native js实现,很多都应用到了闭包,闭包除了目前已知的一些特性,如:可以保持局部变 ...
- ReactJS-2-props vs state
rops理解: 大多数组件都可以在创建的时候被不同的参数定制化,这些不同的参数就叫做props.props的流向是父组件到子组件. 子组件Comment,是一条评论组件,父组件CommentList, ...
- 百度地图对https的支持
在使用百度地图时,如果直接使用其提供的js地址,在通过https的方式请求时,是不支持的 <script type="text/javascript" src="h ...
- LoadRunner10自带的WEBTOURS,无法显示Flights页面问题解决办法
[问题描述] 安装LoadRunner10之后,尝试打开自带的webTours页面学习.第一次可以打开,之后安装了一RFT.Oracle等软件,就出现页面无法显示问题.一直以为是Java的问题,尝试各 ...
- centOS linux 下nginx编译安装详解
Nginx的官方网站是 www.nginx.org Nginx的下载地址是:http://nginx.org/en/download.html 由 于官网的设计非常简洁不大气不上档次,所以我们 ...
- Jmeter中之各种乱码问题解决方案
一.Jmeter中之请求乱码问题 如果你参数化的数据是中文,那么应该怎么解决这个问题呢? 1.在脚本的参数接设置数据的接收编码为UTF-8,如下图,这里只保证请求参数的不乱码. 2.从本地txt文件中 ...
- ASP.NET自学之路(转载)
第一步 掌握一门NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET. ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去! 第 ...
- CAD参数绘制批注(com接口)
C#中实现代码说明: private void DrawComment() { MxDrawComment com = new MxDrawComment(); MxDrawPoint pt = ne ...
- SQLSTATE=2300
在powerdesigner将表的结构运用于数据库的时候报的错. 目标: 在Hibernate中使用多表级联的插入操作. 解决办法: 将navicat中的mysql数据库表删除, 手动创建 原因: p ...