1. 程式人生 > >每週一演算法(3):巴斯卡三角形

每週一演算法(3):巴斯卡三角形

寫了前面兩個發現可能很弱智,這些簡單的演算法還要寫一大堆

所以簡單的演算法我們只貼程式碼,和簡單的描述,不做詳細說明

看上圖就知道什麼意思了。

#include <stdio.h>
#define N 12  //列印多少行
long combi(int n, int r) //對於數字的演算法
{
    int i;
    long p = 1;
    for(i = 1; i <= r; i++)
        p = p * (n-i+1) / i;
    return p;
}

void paint() 
{
    int n, r, t;
    for(n = 0; n <= N; n++)   //針對每行
    {
        for(r = 0; r <= n; r++) //對於每行應該出現的數字個數
        {
            int i;/* 排版設定開始 */
            //判斷條件搞定空格個數
            if(r == 0) 
            {
                for(i = 0; i <= (N-n); i++)
                    printf(" ");
            }
            else 
            {
                printf(" ");
            } 
            printf("%3d", combi(n, r));
        }
        printf("\n");
    }
}