【程式設計-C#】巴斯卡三角形

巴斯卡三角形的演算法:

步驟1:在第1列中間行位置放入1

步驟2:從第2列開始,每個元素的值為其左上角的值與右上角的值相加,若元素在邊界,左或右邊已到邊緣,沒有左上或右上的元素可供相加,此時,我們可以假想這些不存在的元素為0,在左邊界的話,則元素的值等於0+右上角的值,在右邊界的話,則元素的值等於左上角的值+0。

程式的寫法:

陣列的大小為n x (2n-1)

    const int nr = 7; //列的數量
    const int nc = 2 * nr - 1; //行的數量
    int[,] M = new int[nr, nc]; //建立一個 n x 2n-1大小的二維陣列
    int row = 0, col = nc / 2; //計算第一列中間位置
    M[row, col] = 1; //將1放入第1列中間位置   
    for (row = 1; row < nr; row++)
    {
        for (col = 0; col < nc; col++)
        {
            if (col == 0) M[row, col] = M[row - 1, col + 1]; //左邊界
            else if (col == nc - 1) M[row, col] = M[row - 1, col - 1]; //右邊界
            else M[row, col] = M[row - 1, col - 1] + M[row - 1, col + 1];
        }
    }
    for (row = 0; row < nr; row++)
    {
        for (col = 0; col < nc; col++)
        {
            if (M[row, col] != 0) Console.Write("{0, 4}", M[row, col]);
            else Console.Write("    "); //如果是0的話,就只輸出4個空白,不要輸出0
        }
        Console.WriteLine();
    }

}


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料