24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1666  |  回复: 5
本帖产生 3 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

holmescn

金虫 (正式写手)

[交流] Euler 工程 第十五题:从左上角到右下角有多少条路?已有4人参与

哈哈,题目越来越有意思了。下面这个题是个排列组合的题目。当然,不用那东西 也能解出来。大家来玩玩吧!

说有一个2x2的格子,从左上角到右下角有6条可行的路线(要求不要回头)如图:



那么一个20x20的格子有多少条路线呢?

记得,不只可以写代码,还可以做分析。大家一起来玩吧!

[ Last edited by holmescn on 2011-5-22 at 20:40 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 谢谢参与交流! 2011-05-22 23:33:29
点A(n, n)的通道数是A(n-1, n)和A(n, n-1)条数之和,即A(n, n) = A(n-1, n)+A(n, n-1)。这个题目就是咱曾经做过的f(m, n) = f(m-1, n) + f(m, n-1)的题目,只是初始条件是f(1, n) = 1,f(m, 1) = 1。
不过,这个题是传说中的高考题,题解为m+n里面选出m或n条边的组合数C(m+n)m。
漩涡的中心有一块空地,空空的。
2楼2011-05-22 22:41:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励交流! 2011-05-22 23:34:32
C++实现的各种解法:
CODE:
#include
enum {BUFSZ = 20};
//迭代f(m, n) = f(m, n-1)+f(m-1, n)的版本
double eular15(int m = 20, int n = 20){
        if(m < n){
                std::swap(m, n);
        }
        double buf[BUFSZ];
        for(int i = 0; i < BUFSZ; ++i)
                buf[i] = 1;
        for(int i = 0; i < n; ++i){
                buf[i] += buf[i];
                for(int j = i; j < m - 1; ++j){
                        buf[j+1] = buf[j] + buf[j+1];
                }
        }
        return buf[m-1];
}
//组合数直接计算版本,m+n里面选出m个和选出n个是一样的
double _eular15(int m = 20, int n = 20){
        double r1 = 1, r2 = 1;
        for(int i =  n + 1; i <= m+n; ++i){
                r1 *= i;
        }
        for(int i = 1; i <= n; ++i){
                r2 *= i;
        }
        return r1/r2;
}
int main(){
         std::cout<          std::cout<<_eular15()< }

漩涡的中心有一块空地,空空的。
3楼2011-05-22 22:48:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见