POJ 1942--Paths on a Grid
2014-08-08 09:41
399 查看
从题目所举的例子可以看出当横向的五条边或者纵向的4条边确定在哪些位置后路径也就确定了,易知使用较少的边来确定。
我们从上往下用U{1,2,3,4}代表这4条纵向边,0代表没有纵向边。从左往右用V{1,2,3,4,5,6}代表纵向边可能的位置,题目即要求我们对U,V进行一种匹配,使得U中除0外较小的边映射到V中较大的位置。例如题目给出的第一种匹配(U,V)={1,6),(2,6),(3,5),(0,4),(0,3),(4,,2),(0,1)},可知这些种映射和路径是一一对应的。
根据要求,我们可以进行排列组合,有多少种V种元素的选择对应U中大于0的边,易知有C(6,1)+C(6,2)+C(6,3)+C(6,4),假设我们从6个位置中选择了5,6,在V中的选择也即是我们要将1,2,3,4有序地分成两部分,也即是在4个数的3个间隔中选择一个插入,有C(3,1)种。所以结果就为从C(6,1)+C(6,2)*C(3,1)+...+C(6,4)*C(3,3)。
类推到n,m(n>=m),就有C(n+1,1)+C(n+1,2)*C(m-1,1)+...+C(n+1,k)*C(m-1,k-1)+...+C(n+1,m)。
注意到输入较大,求组合数要乘除同时进行。
我们从上往下用U{1,2,3,4}代表这4条纵向边,0代表没有纵向边。从左往右用V{1,2,3,4,5,6}代表纵向边可能的位置,题目即要求我们对U,V进行一种匹配,使得U中除0外较小的边映射到V中较大的位置。例如题目给出的第一种匹配(U,V)={1,6),(2,6),(3,5),(0,4),(0,3),(4,,2),(0,1)},可知这些种映射和路径是一一对应的。
根据要求,我们可以进行排列组合,有多少种V种元素的选择对应U中大于0的边,易知有C(6,1)+C(6,2)+C(6,3)+C(6,4),假设我们从6个位置中选择了5,6,在V中的选择也即是我们要将1,2,3,4有序地分成两部分,也即是在4个数的3个间隔中选择一个插入,有C(3,1)种。所以结果就为从C(6,1)+C(6,2)*C(3,1)+...+C(6,4)*C(3,3)。
类推到n,m(n>=m),就有C(n+1,1)+C(n+1,2)*C(m-1,1)+...+C(n+1,k)*C(m-1,k-1)+...+C(n+1,m)。
注意到输入较大,求组合数要乘除同时进行。
#include<cstdio> long long nchoosek(long long n,long long k) { if(k == 0) return 1; long long x,y,z; x = y = z = 1; while(k) { x *= n; y *= k; if(x%y == 0) { z *= (x/y); x = y = 1; } n--; k--; } return z; } int main() { long long n,m; long long num; while(~scanf("%lld%lld",&n,&m)&&(n||m)) { if(n == 0||m == 0) { printf("1\n"); continue; } if(n < m) { n ^= m; m ^= n; n ^= m; } num = 0; for(int i = 1;i <= m;i++) num += nchoosek(n+1,i)*nchoosek(m-1,i-1); printf("%lld\n",num); } return 0; }
相关文章推荐
- [ACM] POJ 1942 Paths on a Grid (组合)
- poj 1942 Paths on a Grid 【数学题】
- poj 1942 Paths on a Grid
- 组合数学 poj 1942(Paths on a Grid)
- Paths on a Grid POJ 1942 组合数学
- POJ 1942 Paths on a Grid
- POJ - 1942 D - Paths on a Grid 组合数
- POJ 1942 Paths on a Grid (组合数学)
- 【POJ 1942】 Paths on a Grid
- POJ 1942 Paths on a Grid
- POJ_1942_Paths on a Grid 组合数学
- 【poj 1942】Paths on a Grid 题意&题解&代码(C++)
- POJ 1942 Paths on a Grid 解题报告(double妙用)
- poj 1942 Paths on a Grid (求组合数)
- POJ 1942 Paths on a Grid(组合数学)
- poj 1942 Paths on a Grid
- Paths on a Grid(poj 1942)
- POJ-1942-Paths on a Grid
- POJ 1942-Paths on a Grid(组合数学)
- poj 1942 Paths on a Grid 简单排列组合 + unsigned long long 使用方法