poj 1942 走地图的组合数学
来源:互联网 发布:php 加密 beast 破解 编辑:程序博客网 时间:2024/05/18 04:01
题意:求从左下角出发只能往右走和往上走,给定矩阵n*m,求有多少中走法,组合数学,求Cn(n+m)或Cm(n+m)为了减少计算量,去小的那个,三个for肯定会爆掉,而杨辉三角规模只能20+太少
解决方法
拆分阶乘,逐项相除,再乘以前面所有项之积。这种方法用一个循环就OK了,时间复杂度只有O(n-m),非常可观。
某大牛写的函数原型:
double cnm=1.0;
while(b>0)
cnm*=(double)(a- -)/(double)(b- -);
贴上代码,必须用unsigned,否则wa。。
#include <cstdio>#include <cstring>#include <string>#include <iostream>using namespace std;unsigned comp(unsigned n,unsigned m){ unsigned a=m+n; unsigned b=(m<n?m:n); double cnm=1.0; while(b>0) cnm*=(double)(a--)/(double)(b--); cnm+=0.5; return (unsigned)cnm;}int main(){ unsigned n,m; while(cin>>m>>n) { if(!m&&!n) break; cout<<comp(n,m)<<endl; }}
0 0
- poj 1942 走地图的组合数学
- poj-1942-组合数学
- POJ 1942 组合数学
- POJ 1942(组合数学)
- poj 1850组合数学
- poj 1850(组合数学)
- POJ 3252 组合数学
- poj 3252组合数学
- POJ 3252 组合数学?
- POJ 3731 (组合数学)
- 走格子(数学组合/动态规划)
- 51nod1119 机器人走方格 组合数学
- poj 3252 组合数学,数论
- Code POJ 1850 组合数学
- POJ 1715(组合数学)
- POJ 1850/ 1496 组合数学
- poj 1850 Code 组合数学
- poj 1850 Code (组合数学)
- Java 类和对象,如何定义Java中的类,如何使用Java中的对象,变量
- vscode前端js,css,html插件
- C语言 - 变量初始化的重要性
- H.264句法和语法总结(一)句法元素的分层结构
- VC中单文档/多文档的程序左上角图标加载不正确解决方法
- poj 1942 走地图的组合数学
- cookie 创建和删除
- micropython中的数据结构
- HashSet,LinkedHashSet ,TreeSet使用区别
- 谈谈对Spring IOC的理解
- 按键事件处理
- H.264句法和语法总结(二)NAL层句法
- micropython添加自己的包
- Fragment里面嵌套Fragment