1. 程式人生 > >尤拉計劃問題十五matlab實現

尤拉計劃問題十五matlab實現

Problem 15 :Lattice paths

Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.

                                                                   

How many such routes are there through a 20×20 grid?

思路 :

看到這種題目很親切有沒有?就像上小學時候數學題-------找規律。這道題就是以前找規律題的plus版,題目很容易理解,那我們要怎麼找出規律呢?細看一下發現規律確實沒那麼容易找,正推推不出來,於是我採用逆向思維,畫了幾個3x3,4x4,  6x6的方格,發現越來越有意思了。有些問題我們可能不能從表面發現其內在聯絡,可是一旦發現了一些規律,你就會驚歎為什麼自己剛開始的時候不去這樣想!

一旦有了思路,便會文思泉湧,筆耕不綴,我畫了一個圖,看上去更直觀!

  • 仔細觀察,這不就是傳說中著名的-------------楊輝三角嗎?
  • 其中標記的點旁邊的數字代表從該點到結束點路徑的數目。舉個栗子:比如說黑點到結束點有兩條路徑,一條是先往右一格,再往下一格。另一條呢就是先往下一格,再往右一格。很有意思,有沒有?接下來的對角線呢?

你眼中看似落葉紛飛,變化無常的世界,實際只是躺在上帝懷中一份早已譜好的樂章!

程式碼 :

clear,clc;
tic
A = zeros(41);
A (:,1) = 1;
A (2,2) = 1;
for i = 3:41
    A (i,i) = 1;
    for j = 2:i-1
        A(i,j) = (A(i-1,j-1)) + (A(i-1,j));        %yanghui triangle lterative
    end
end
t = max(A,[],2);                %save data to matrix
disp(max(t));
toc

 結果 :  137846528820