楊輝三角
第一次嘗試
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 10
//正常排列的楊輝三角
int arr[N][2 * N - 1] = { 0 };
void YangHuiTriangle(int n) {
int flag = 1;
int mid = n;
arr[0][n] = 1;
for (int i = 1; i < n; i++) {
if (flag == 1) {
for (int j = 0, k = 1; j < (i + 1) / 2; j++, k += 2) {
arr[i][n - k] = arr[i - 1][n - k - 1] + arr[i - 1][n - k + 1];
arr[i][n + k] = arr[i - 1][n + k - 1] + arr[i - 1][n + k + 1];
}
}
if (flag == -1) {
for (int j = 0, k = 0; j <= i / 2; j++, k += 2) {
arr[i][n - k] = arr[i - 1][n - k - 1] + arr[i - 1][n - k + 1];
arr[i][n + k] = arr[i - 1][n + k - 1] + arr[i - 1][n + k + 1];
}
}
flag = -flag;
}
}
void print(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n ; j++) {
if (arr[i][j] != 0) {
printf("%2d", arr[i][j]);
}
else {
printf(" ");
}
}
printf("\n");
}
}
//不正規的楊輝三角,排列不好看
void yangHuiTriangle(int n)
{
int data[30][30] = { 1 }; //第一行直接填好,播下種子
int i, j;
for (i = 1; i < n; i++) //從第二行開始填
{
data[i][0] = 1; //每行的第一列都沒有區別,直接給1,保證不會越界。
for (j = 1; j <= i; j++) //從第二列開始填
{
data[i][j] = data[i - 1][j] + data[i - 1][j - 1]; //遞推方程
}
}
for (i = 0; i < n; i++) //填完列印
{
for (j = 0; j <= i; j++)
{
printf("%d ", data[i][j]);
}
putchar('\n');
}
}
//稍微改進,但是排列仍舊不夠好看,不過由於是一維的,所以變簡單了,但是每次只能儲存最後一行的資料
void yangHuiTriangle1(int n)
{
int data[30] = { 1 };
int i, j;
printf("1\n"); //第一行就直接列印了
for (i = 1; i < n; i++) //從第二行開始
{
for (j = i; j > 0; j--) //從後向前填,避免上一行的資料在使用前就被覆蓋
{
data[j] += data[j - 1]; //公式同上,由於變成了一維,公式也變簡單了。
}
for (j = 0; j <= i; j++) //這一行填完就直接列印了。
{
printf("%d ", data[j]);
}
putchar('\n');
}
}
int main() {
printf("請輸入想要列印的行數:");
int n = 0;
scanf("%d", &n);
YangHuiTriangle(n);
print(n);
//yangHuiTriangle(n);
//yangHuiTriangle1(n);
return 0;
}
本次程式碼,寫了三種不同的方法,第一種是我最滿意的,完整列印了楊輝三角,包括排列的位置,第二種和第三種不夠成熟,雖然列印出了楊輝三角,但是排列不夠完美,第三種是最簡單的一種,永遠只保留最後一行,然後運算之後替換成下一行。
相關文章
- 列印楊輝三角(1)
- 08_楊輝三角
- 楊輝三角形
- 119. 楊輝三角 II
- 楊輝三角列印10行
- LeetCode 118. 楊輝三角LeetCode
- HDU-2032-楊輝三角
- js中實現楊輝三角JS
- 杭電OJ 2032楊輝三角
- Java基礎——列印楊輝三角Java
- Golang 遞迴列印楊輝三角Golang遞迴
- c語言筆記:楊輝三角C語言筆記
- 使用python生成楊輝三角形Python
- 經典演算法(5)楊輝三角演算法
- 楊輝三角(組合數)+排列組合
- LeetCode每日一題: 楊輝三角(No.118)LeetCode每日一題
- leedcode每日一題:118. 楊輝三角每日一題
- 佇列(楊輝三角)——鏈式佇列佇列
- 7-3 列印楊輝三角 (20分) 本題要求按照規定格式列印前N行楊輝三角。
- leetcode第一百一十九題:楊輝三角ⅡLeetCode
- 前端演算法題:JS遞迴實現楊輝三角前端演算法JS遞迴
- Python計算組合數生成楊輝三角形Python
- 楊輝三角的5個特性,一個比一個牛皮!
- 20190105-列印字母C,H,N,口等影像和楊輝三角
- 增補部落格 第十八篇 python 楊輝三角形Python
- 組合數的計算(利用楊輝三角/記憶化搜尋)
- 藍橋杯第五屆JavaC組楊輝三角問題解決方法Java
- 組合數取模的幾種方法--Exlucas&楊輝三角&組合
- 藍橋杯-基礎練習-楊輝三角形(Python)AC程式碼PythonC程式
- 實驗四:採用一維陣列輸出等腰三角形的楊輝三角。陣列
- 微課|中學生可以這樣學Python(例6.1):楊輝三角形Python
- 領釦LintCode演算法問題答案-1354. 楊輝三角形II演算法
- OceanBase CTO楊傳輝:放手去幹,這行沒有35歲危機
- OceanBase CTO楊傳輝:萬字解讀,打造開發者友好的分散式資料庫分散式資料庫
- 楊傳輝:深挖 OceanBase 背後的技術邏輯,助力資料庫核心系統升級資料庫
- Meetup 報名 | 從資料庫到架構,OceanBase CTO 楊傳輝邀你聊透分散式資料庫架構分散式
- 地輝
- OceanBase CTO 楊傳輝:下一代企業級分散式資料庫的一體化設計分散式資料庫