计数问题
文章平均质量分 65
「已注销」
这个作者很懒,什么都没留下…
展开
-
组合数计算的两种方法
计算(n,r)方法一:连乘r个整商#include<iostream>using namespace std;int main(){ int n, r; while (cin >> n >> r) { int ans = 1; for (int i = 1; i <= r; i++) ans =ans* n-- / i; co...原创 2018-03-29 22:54:19 · 2900 阅读 · 0 评论 -
uva 11401
题目链接https://vjudge.net/problem/UVA-11401给你长度为1,2...n的边,可以构造出多少个三角形,每条边可以使用多次,构造出的三角形每条边不能相等刚开始碰到也是无从下手,暴力求解的话不出意外应该是过不了的,否则这题意义何在根据经验是要找出递推公式,怎么找呢?不管别的,先用fn表示边长最大为n可以构造出的三角形个数显然f1=f2=f3=0 f4=1 我们一定可以写...原创 2018-05-29 21:19:47 · 196 阅读 · 1 评论 -
uva 10918 计数问题
题目链接看了几篇博客,只有这篇博客真正的把这个问题说清楚了大家可以参考一下 https://www.cnblogs.com/staginner/archive/2011/12/16/2290020.html这种题很大概率是要得到递推公式,但是怎么得到递推公式是个难点,首先考虑这样一个问题,我们怎么样拼出一个长度为x且无法用竖线分割的矩形(x为偶数),当x=2时,有三种拼法,很简单,那么当x>...原创 2018-05-24 22:58:31 · 140 阅读 · 0 评论 -
贝尔数,两类斯特灵数的计算公式
第一类斯特灵数:含正负值,其绝对值是包含n个元素的集合分作k个环排列的方法数目。递推公式 s(n,0)=0,s(1,1)=1,s(n,k)=s(n-1,k-1)+(n-1)*s(n-1,k)第二类斯特灵数:把包含n个元素的集合划分为正好k个非空子集的方法的数目。递推公式 s(n,k)=s(n-1,k-1)+k*s(n-1,k)贝尔数 Bn表示包含n个元素的集合的划分方法的数目递推公式 B0...原创 2018-05-24 13:19:17 · 1805 阅读 · 0 评论 -
错排递推公式
n个元素编号为1,2...n,求每个元素都不在自己位置的排列数设1,2...n错排的数目为Dn递推公式为Dn=(n-1)*(Dn-2+Dn-1) n>=3原创 2018-05-24 12:03:51 · 489 阅读 · 0 评论 -
uva 10648 dp+计数
题目链接 https://vjudge.net/problem/UVA-10648#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iomanip>#include<strin...原创 2018-05-25 17:34:18 · 101 阅读 · 0 评论 -
uva 10007 卡特兰数+大数
题目链接https://vjudge.net/problem/UVA-10007不考虑节点之间的差异,即认为所有节点都是相同的令Fn表示n个节点的二叉树的不同形态的个数对于一个拥有n个节点的二叉树来说,假设它左子树有k个节点,那么右子树就有n-k-1个节点,那么就有Fk*Fn-k-1种情况,k的可能取值为0,1,2...n-1,根据加法原理,就有Fn=F0*Fn-1+F1*Fn-2+...Fn-1...原创 2018-05-25 12:00:38 · 291 阅读 · 0 评论 -
利用字典序生成下一个排列和组合的方法
bool get_next_permutation(string &s) //得到下一个全排列{ bool flag = true; int i = s.size() - 1; while (i > 0 && s[i - 1] >= s[i]) i--; //从后往前找到第一个正序,即s[i-1]<s[i] if (i == 0)...原创 2018-05-03 22:39:41 · 1423 阅读 · 0 评论 -
Catalan数计算公式
#include<iostream>using namespace std;struct BIGNUM{ int s[200], l;}c[120]; //c[i]=hiBIGNUM operator*(BIGNUM a, int b) //a=a*b{ for (int i = 0; i < a.l; i++) a.s[i] *= b; for(int i=...原创 2018-04-09 22:34:06 · 3308 阅读 · 0 评论 -
生成{1,2,..n}的字典序r-组合算法
递归法:效率较低#include<cstdio>#include<iostream>using namespace std;#define ARRAYSIZE 8#define PICKNUM 4int gl_i = 0;//统计组合数//对于输入inputArray[i...ARRAYSIZE-1],取k个元素的所有组合,逆序存入outputArray中vo...原创 2018-04-09 12:27:50 · 904 阅读 · 0 评论 -
uva147
https://vjudge.net/problem/UVA-147跟背包问题类似看代码就够了#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<algorithm>using na...原创 2018-05-30 10:14:04 · 192 阅读 · 0 评论