打印杨辉三角的9种方法与解析 | 您所在的位置:网站首页 › 深入浅出学算法014-杨辉三角 › 打印杨辉三角的9种方法与解析 |
打印杨辉三角
杨辉三角科普: 杨辉三角,是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。如图: 解法五 #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 实验室设备网 版权所有 |