校oj1085 计算从左下到右上有多少不同走法
来源:互联网 发布:淘宝注册网店网址 编辑:程序博客网 时间:2024/04/29 12:12
给出一个n*m的矩阵,每次从左下走到右上,共有多少种不同走法。
一开始思考,用二层循环遍历一边,但是果断TLE。
正解:每次走n+m步,每一步要么是往上走,要么是往右走,所以就相当于在n+m中挑出n步走上.
就变成组合数学题了 C(n+m)m或者是C(n+m)n 应该取最小,这样就能省不少时间。
C(n+m)min{n,m}
如何快速算 Cnm呢
double now=1;
while(m){
now=now*(double)n--/(double)m--;
这样就可以在O(m)中算出了。
#include<stdio.h>#include<iostream>#include<string.h>using namespace std;unsigned int n,m;unsigned int MIN(unsigned int a,unsigned int b){ return a<b?a:b;}int main(){ while(cin>>n>>m&&(n+m)){ unsigned int min=MIN(n,m); unsigned int max=m+n; double now=1; while(min){ now=now*((double)max--/(double)min--); } now+=0.5; //这里,当double强制转换成unsigned int时,会强制抹去小数,所以要先进位。 cout<<(unsigned int)now<<endl; } return 0;}
- 校oj1085 计算从左下到右上有多少不同走法
- 【动态规划】求二维数组从左下到右上的最优路径
- 笔试算法题解析--二维数组右上到左下打印
- 一个M * N的方格,从左下角走到右上角有多少种走法?
- 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?
- 楼梯有n阶台阶,上楼可以一步上1阶,2阶,3阶,编程序计算共有多少种不同的走法?
- 楼梯有n阶台阶,上楼可以一步上1阶,2阶,3阶,编程序计算共有多少种不同的走法?
- 二维数组右上左下遍历
- 二维数组右上左下遍历
- 二维数组右上左下遍历
- 有一座寺庙有 8 级台阶,李明从下向上走,若每次叧能跨过一级或两级,他走上去有多少种不同方法
- 爬楼梯问题,一共有n阶台阶,每次你可以走1或者2个台阶,到达顶端一共有多少种不同的走法?
- 【OpenJudge】二维数组右上左下遍历
- 21:二维数组右上左下遍历
- 网易编程:寻找所有横,竖,左上到右下,右上到左下,四种方向的所有和
- 问题五十七: 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?
- 一道matlab作业题:假设从楼上到楼下有8个台阶,每一步有三种走法:走1个台阶;走2个台阶;走3个台阶,问可以有多少种方案?并将所有方案输出
- 描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法。
- Java基础-环境变量设置及Java命令行使用
- 高可用的Mysql双机热备(Mysql_HA)
- centos 安装图形桌面
- 黑马程序员_for循环和函数
- android 反编译
- 校oj1085 计算从左下到右上有多少不同走法
- 【iOS开发】---- UIView动画
- JavaScript 操作XML
- 黑马程序员_数组的排序,求最值和查找
- 经典单例模式的实现:
- Unity3d编译APK包时,DEX编译失败
- 如何挂载ubi文件系统
- android Task 学习笔记
- 黑马程序员_面向对象讲解