每週一演算法(3):巴斯卡三角形
阿新 • • 發佈:2018-11-25
寫了前面兩個發現可能很弱智,這些簡單的演算法還要寫一大堆
所以簡單的演算法我們只貼程式碼,和簡單的描述,不做詳細說明
看上圖就知道什麼意思了。
#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"); } }