24小时热门版块排行榜    

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

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的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+2): 辛苦了 2011-05-23 01:32:29
余泽成(程序强帖+1): 2011-05-23 19:22:42
分析,所有到a点的方法是"到b点方法+到c点方法之和"
递归分析回去发现,这正是matlab中的pascal矩阵


于是我偷懒了

matlab code
CODE:
%% How many routes are there through a 20×20 grid?
function result = euler15()
tic;
a = pascal(21);
result = a(end,end);
toc;
end

结果+时间
CODE:
% Elapsed time is 0.008664 seconds.
% ans =
%               137846528820

[ Last edited by libralibra on 2011-5-23 at 00:21 ]
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-05-23 00:19:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangww2011

木虫 (著名写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励交流! 2011-05-23 19:23:58
楼上的都很快阿
我用的笨办法 二维数组 就是实现起来简单,结果
CODE:
137846528820
elapsed time=0.000000 seconds.

代码:
CODE:
#include
#include
#include

#define TIMERSTART clock_t start_time,stop_time;double elapsed_time;start_time = clock();
#define TIMERSTOP stop_time = clock();elapsed_time=(double)(stop_time-start_time)/CLOCKS_PER_SEC;printf("elapsed time=%f seconds.\n",elapsed_time);


long long euler15(int n){
  int i,j;
  long long a[n+1][n+1];
  for(i=0;i      a[i][0]=1;
     a[0][i]=1;
  }
  
  for(i=1;i       for(j=1;j          a[i][j]=a[i-1][j]+a[i][j-1];
      }
  }
  return a[n][n];
}


int main(void){
TIMERSTART;

printf("%lld\n",euler15(20));

TIMERSTOP;

  return 0;
}

6楼2011-05-23 18:23:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见