码迷,mamicode.com
首页 > 其他好文 > 详细

杨辉三角

时间:2020-11-17 12:33:54      阅读:7      评论:0      收藏:0      [点我收藏+]

标签:lib   简单的   int   clu   flag   amp   方法   can   lag   

//第一次尝试:
#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; }
//本次代码,写了三种不同的方法,第一种是我最满意的,完整打印了杨辉三角,包括排列的位置
//第二种和第三种不够成熟,虽然打印出了杨辉三角,但是排列不够完美
//第三种是最简单的一种,永远只保留最后一行,然后运算之后替换成下一行

 

杨辉三角

标签:lib   简单的   int   clu   flag   amp   方法   can   lag   

原文地址:https://www.cnblogs.com/zhm521/p/13959871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!