打印杨辉三角的9种方法与解析 您所在的位置:网站首页 深入浅出学算法014-杨辉三角 打印杨辉三角的9种方法与解析

打印杨辉三角的9种方法与解析

2023-08-29 04:27| 来源: 网络整理| 查看: 265

打印杨辉三角

杨辉三角科普: 杨辉三角,是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。如图:杨辉三角 C语言打印杨辉三角的方法 解法一

#include int main() { int i, j, n = 0; //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int a[100][100] = { 0 }; //二维数组大小可自定,但切记不可使其超过整形数组的大小 while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 0; i int i, j, n = 0; //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int a[100][100] = { 1 }; //二维数组大小可自定,但切记不可使其超过整形数组的大小 while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 1; i for (j = 0; j 0,1 }; //只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0 //二维数组大小可自定,但切记不可使其超过整形数组的大小 while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 1; i int i, j, n = 0; //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int a[100][100] = { 0,1 }; //二维数组大小可自定,但切记不可使其超过整形数组的大小 while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 1; i a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; printf("%5d", a[i][j]); } printf("\n"); } return 0; } //优化于解法三,仅将赋值输出同时进行,且注意换行符的位置更替。

解法五

#include int main() { int i, j, n = 0; //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int a[100] = { 1 }; int b[100] = { 0 }; while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 0; i a[j] = b[j]; printf("%5d", a[j]); } printf("\n"); } return 0; } //解法五不同于前者,使用两个一维数组能够较好的节省空间,方法可行,but运行方式有待我仔细酌定。

解法六

#include int main() { int i, j, n = 0; int l, r; //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int a[100] = { 0,1 }; while (n 100) //在输入的值不正确时自动初始化问题,重新输入 { printf("请输入要打印的杨辉三角行数>:"); scanf("%d", &n); } for (i = 1; i r = a[j]; a[j] = l + r; l = r; printf("%5d", a[j]); } printf("\n"); } return 0; } //解法六使用一个一维数组,再加两个临时变量进行操作

解法七:使用一维数组,占用内存少

#include int main() { int i, j, n, k, t; long Buf[21]={0,1}; //用于保存一行数据 printf("请输入杨辉三角形的行数(1 ~ 20):"); scanf("%d",&n); for( i = 1; i k = Buf[j]; Buf[j] = t + k; //每个数是上面两数之和(三角计算) t = k; printf("%6d", Buf[j]); } printf("\n"); } return 0; }

解法八:使用递归函数法,程序最简,占用内存最少,最佳算法

#include long Tri(int r, int c) //杨辉三角算法函数 { return (c == 1 || c == r) ? 1 : Tri( r - 1, c - 1 ) + Tri( r - 1, c ); } int main() { int i, j, n; printf("请输入杨辉三角形的行数(1 ~ 20):"); scanf("%d", &n); for( i = 1; i const int n = 15; const int m = 2 * n-1; int arr[n + 1][m] = { 0 }; for (int i = 0; i for (int j = 0; j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有