1-求组合数(c(n, m))的几种方法
1.求C(n, m)
动态规划(递归+记忆数组)
递推关系为:C(n, m) = C(n-1, m) + C(n - 1, m - 1),C(n, m)表示为从n个数中选出m个出来,可以基于最后一个元素考虑分解为两种情况:1:选择最后个元素则后面情况为从n-1中再选出m-1个即可:C(n - 1, m - 1), 2:不选择最后一个元素则情况为从剩余的n-1个中选择m个元素:C(n - 1, m ).。所以总情况就是两者的和。 所以:C(n, m) = C(n-1, m) + C(n - 1, m - 1) ==》其实这就是组合数学上的性质:C(n, m) + C(n, m - 1) = C(n + 1, m)
long long f(long long n, long long m){
if(a[n][m]){
return a[n][m];
}
if(m == 1){
return a[n][m] = n;
}
if(m == 0){
return a[n][m] = 1;
}
if(n < m){
return a[n][m] = 0;
}
if(n == 1)
return a[n][m] = 1;
return a[n][m] = f(n - 1, m) + f(n - 1, m - 1);
}
菲波那切数列思想:
| n\m | 00 | 01 | 02 | 03 | 04 | 05 |
| 1 | 1 | 1 | ||||
| 2 | 1 | 2 | 1 | |||
| 3 | 1 | 3 | 3 | 1 | ||
| 4 | 1 | 4 | 7 | 4 | 1 | |
| 5 | 1 | 5 | 11 | 11 | 5 | 1 |
例题:
long long f(long long n, long long m){
a[0]=1;
for(int i=1;i<=n;i++){
a[i]=1;
for(int j=i-1;j>0;j--){
a[j]=a[j]+a[j-1];
}
}
return a[m];
}
链接:https://www.nowcoder.com/acm/contest/67/H
来源:牛客网
题目描述
现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒
输入描述:
第一行是样例数T
第2到2+T-1行每行有一个整数n(n<=80),描述每个样例中的n。
输出描述:
对于每个样例输出对应的方法数
输入例子:
3
1
2
4
输出例子:
1
2
5
-->
输入
3
1
2
4
输出
1
2
5
#include <iostream>
using namespace std;
int n;
long long a[1000];
long long f(long long n, long long m){
a[0]=1;
for(int i=1;i<=n;i++){
a[i]=1;
for(int j=i-1;j>0;j--){
a[j]=a[j]+a[j-1];
}
}
return a[m];
} long long count = 0;
int main(){
int t;
cin >> t; while(t--){
cin >> n;
count = 0;
for(int i = 0; i <= n / 2; i++){
count += f(n - i, i);
}
cout << count << endl;
} return 0;
}
1-求组合数(c(n, m))的几种方法的更多相关文章
- lucas求组合数C(n,k)%p
Saving Beans http://acm.hdu.edu.cn/showproblem.php?pid=3037 #include<cstdio> typedef __int64 L ...
- URAL 1994 The Emperor's plan 求组合数 大数用log+exp处理
URAL 1994 The Emperor's plan 求组合数 大数用log #include<functional> #include<algorithm> #inclu ...
- N!分解质因子p的个数_快速求组合数C(n,m)
int f(int n,int p) { ) ; return f(n/p,p) + n/p; } https://www.xuebuyuan.com/2867209.html 求组合数C(n,m)( ...
- 求组合数、求逆元、求阶乘 O(n)
在O(n)的时间内求组合数.求逆元.求阶乘.·.· #include <iostream> #include <cstdio> #define ll long long ;// ...
- HDU 5852 Intersection is not allowed!(LGV定理行列式求组合数)题解
题意:有K个棋子在一个大小为N×N的棋盘.一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,b ...
- hdu 2519 求组合数
求组合数 如果求C5 3 就是5*4*3/3*2*1 也就是(5/3)*(4/2)*(3/1) Sample Input5 //T3 2 //C3 25 34 43 68 0 Sample Outpu ...
- 求组合数 C++程序
一 递归求组合数 设函数为void comb(int m,int k)为找出从自然数1.2.... .m中任取k个数的所有组合. 分析:当组合的第一个数字选定时,其后的数字是从余下的m-1个数中 ...
- HDU 5698——瞬间移动——————【逆元求组合数】
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- Codeforces Round #361 (Div. 2) E. Mike and Geometry Problem 【逆元求组合数 && 离散化】
任意门:http://codeforces.com/contest/689/problem/E E. Mike and Geometry Problem time limit per test 3 s ...
- 51nod1119(除法取模/费马小定理求组合数)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...
随机推荐
- [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数
题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...
- 为Python编写一个简单的C语言扩展模块
最近在看pytorh方面的东西,不得不承认现在这个东西比较火,有些小好奇,下载了代码发现其中计算部分基本都是C++写的,这真是要我对这个所谓Python语音编写的框架或者说是库感觉到一丢丢的小失落,细 ...
- BI系统之统计图表的绘制[后端实现]
因为在开发内部BI系统中需要画出统计图表,我选了Jpgraph 开源绘图工具实现需求. 之前实现过需求,没想到这次又花了很多时间回忆,各种搜索,真的是好记性不如烂笔头, 不会总结的人没有未来啊. 常用 ...
- Windows10解决无法访问其他机器共享的问题
你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问.这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁. 管理员身份执行sc.exe config lanmanwork ...
- nginx 配置实现逻辑预算
nginx 的配置 不支持逻辑与和逻辑非运算,也不支持if 嵌套,只能用其他方式实现 set $flag 0; if ($host != name) { set $flag "${flag} ...
- BUG的定位与分析思路
一般来说bug大多数存在于3个模块: 1.前台界面,包括界面的显示,兼容性,数据提交的判断,页面的跳转等等,这些bug基本都是一眼可见的,不太需要定位,当然也不排除一些特殊情况,本身数据传过来的时候就 ...
- oracle之 Got minus one from a read call 与 ORA-27154: post/wait create failed
在部署应用的时候,有时候应用可以直接启动,但偶尔应用却无法启动,报错信息是: java.sql.SQLRecoverableException: IO Error: Got minus one fro ...
- 虚拟化环境下的CentOS7网络环境存在的问题
http://dgd2010.blog.51cto.com/1539422/1592821/ 为什么要进行一次测试? 在使用CentOS7的过程中发现网络部分有很多与CentOS6所不同的地方. 1. ...
- 7z 7zip 日期、时间,文件名
from: http://hi.baidu.com/guicomeon/item/c0957c373972fbc52f8ec26e 先说明一点,要注意区分当前所使用的系统,中文系统和英文系统是有区别的 ...
- [Java.web]EL表达式
<%@page import="cn.itcast.domain.Address"%> <%@page import="cn.itcast.domain ...