杨辉三角

打印杨辉三角

浪尽此生 提交于 2019-12-15 20:53:51
题目 解题方法的核心代码 用二维数组做题。 每个数是由上一行两个数之和得出。 这是为了二维数组的初始化。 流程图 遇到的困难及解决方法 困难: 1.对初始数组的赋值,不能为零。 2.对整个版面的排版。 解决方法:1.全改为一,由于杨辉三角从1开始数。 2.用之前所学行列问题来用空格换行符,数清每一行所需要的空格用两个for循环。 来源: https://www.cnblogs.com/jsyhaoshuai/p/12045648.html

蓝桥杯 基础练习 杨辉三角

穿精又带淫゛_ 提交于 2019-12-15 14:20:31
基础练习 杨辉三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。 输入格式 输入包含一个数n。 输出格式 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。 样例输入 4 样例输出 1 1 1 1 2 1 1 3 3 1 数据规模与约定 1 <= n <= 34。 # include <stdio.h> # define N 34 int main ( void ) { int n , a [ N ] [ N ] , i , j ; scanf ( "%d" , & n ) ; /*给数组各个元素赋值*/ for ( i = 0 ; i < n ; i ++ ) /*i是行*/ { a [ i ] [ 0 ] = a [ i ] [ i ] = 1 ; /*设置第一个与最后一个数为1*/ for ( j = 1 ; j < i ; j ++ ) /*j是列*/ a [ i ] [ j ] = a [ i - 1 ] [ j - 1 ] + a [ i - 1 ] [ j

实验7-2-6 打印杨辉三角(20 分)

99封情书 提交于 2019-12-15 05:31:37
实验7-2-6 打印杨辉三角(20 分) 本题要求按照规定格式打印前N行杨辉三角。 输入格式: 输入在一行中给出N(1≤N≤10)。 输出格式: 以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。 输入样例: 6 输出样例: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 #include <stdio.h> #define N 11 //可以完成10行的要求,此出将二维数组按照下标为1进行存储的。 //时间:2018年4月23日18:42:03 //思路:首先定义一个二维数组a[][],然后对该数组进行初始化:先初始化边界的所有1 // 再初始化非边界元素。初始化完毕后,控制输出格式。 // 注意:最后一行的第一个1是直接%4d控制输出的,不需要额外打印空格。 int main() { int i, j, k, n, a[N][N]; //定义二维数组a[11[11] 共11行 11列 scanf("%d", &n); for (i = 1; i <= n; i++) //初始化二维数组元素边界元素 { a[i][1] = a[i][i] = 1; //两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数 } for (i = 3; i <= n; i++) //初始化二维数组元素非边界元素 { for (j = 2

杨辉三角

一笑奈何 提交于 2019-12-14 00:05:02
杨辉三角 Problem Description 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。 Input 输入数据包含多组测试数据。 每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。 输入以0结束。 Output 对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。 Sample Input 2 3 0 Sample Output 1 1 1 1 1 1 1 2 1 # include <stdio.h> # include <stdlib.h> int main ( ) { int n , a [ 31 ] [ 31 ] , i , j ; while ( ~ scanf ( "%d" , & n ) && n != 0 ) { for ( i = 1 ; i <= n ; i ++ ) { for ( j = 1 ; j <= i ; j ++ ) { if ( j == 1 || j == i ) a [ i ] [ j ] = 1 ; else a [ i ] [ j ] = a [ i - 1 ] [ j - 1 ] + a [ i - 1 ] [ j ] ; } } for ( i =

打印杨辉三角

帅比萌擦擦* 提交于 2019-12-13 16:54:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 打印以下杨辉三角(打印8行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 1 ··· ··· ··· ··· ··· #define N 9 #include <stdio.h> void main(){ int i,j,a[N][N]; for(i=1;i<N;i++){ a[i][i]=1; a[i][1]=1 } for(i=3;i<N;i++){ for(j=2;j<i;j++){ a[i][j] = a[i-1][j-1] + a[i-1][j]; } } for(i=1;i<N;i++){ for(j=1;j<i;j++){ printf("%6d",a[i][j]); } printf("\n"); } printf("\n"); } 来源: oschina 链接: https://my.oschina.net/u/2707317/blog/692378

打印杨辉三角

时间秒杀一切 提交于 2019-12-13 16:07:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList(); if (numRows <= 0) return res; List<Integer> row1 = new ArrayList(); row1.add(1); List<Integer> prevRow = row1; for (int i=2; i<=numRows; i++) { List<Integer> curRow = new ArrayList(i); curRow.add(1); for (int j=1; j<i-1; j++) { // 除去两边的1 中间的数字由上一列的相邻两个数字相加 curRow.add( prevRow.get(j-1) + prevRow.get(j)); } curRow.add(1); // 将1 加上 res.add(curRow); prevRow = curRow; } return res; } 来源: oschina 链接: https://my.oschina.net/u/3737002

【C语言】请输入一个n(n<=10)并输出一个n行n列的杨辉三角

若如初见. 提交于 2019-12-13 08:19:53
应用二维数组的知识 杨辉三角特点: 1.第一列和对角线的元素全部为1 2.其他元素等于上一行的当前列的值和上一行中当前列前边一列的值之和 #include<stdio.h> #define N 11 int main() { int a[N][N]={{0},{0,1}};/*初始化第0行和第一行,其他全部为0*/ int n,i,j; printf("请输入行数:\n"); scanf("%d",&n); for(i=2;i<=n;i++)//从第2行开始循环计算杨辉三角的每一个值 for(j=1;j<=i;j++)//i==j是对角线位置,是本行应处理的最后一个单元 a[i][j]=a[i-1][j]+a[i-1][j-1]; printf("%d行%d列的杨辉三角:\n",n,n); for(i=1;i<=n;i++)//从第一行开始循环输出杨辉三角 { for(j=1;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; } 来源: https://www.cnblogs.com/HGNET/p/12032944.html

杨辉三角

╄→尐↘猪︶ㄣ 提交于 2019-12-10 20:58:24
杨辉三角效果如下: 总结规律: yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j]; 代码如下: public static void main ( String [ ] args ) { // 构建杨辉三角 int [ ] [ ] yangHui = new int [ 10 ] [ ] ; for ( int i = 0 ; i < yangHui . length ; i ++ ) { yangHui [ i ] = new int [ i + 1 ] ; yangHui [ i ] [ 0 ] = yangHui [ i ] [ i ] = 1 ; if ( i > 1 ) { for ( int j = 1 ; j < yangHui [ i ] . length - 1 ; j ++ ) { yangHui [ i ] [ j ] = yangHui [ i - 1 ] [ j - 1 ] + yangHui [ i - 1 ] [ j ] ; } } } for ( int i = 0 ; i < yangHui . length ; i ++ ) { for ( int j = 0 ; j < yangHui [ i ] . length ; j ++ ) { System . out . print (

杨辉三角

旧巷老猫 提交于 2019-12-09 12:53:02
Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。 Input 输入数据包含多组测试数据。 每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。 输入以0结束。 Output 对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。 Sample Input 2 3 0 Sample Output 1 1 1 1 1 1 1 2 1 Hint Source ZJGSU # include <stdio.h> # include <stdlib.h> int main ( ) { int i , j ; int n ; int a [ 31 ] [ 31 ] ; while ( scanf ( "%d" , & n ) && n ) //多组输入直至输入0,文本结束 { for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j <= i ; j ++ ) { if ( j == 0 || j == i ) a [ i ] [ j ] = 1 ; /

杨辉三角形

淺唱寂寞╮ 提交于 2019-12-07 19:32:30
这类题目,一般是求第n行长啥样,也有求从第一行打印到第n行的 此处,只做了 第n行长啥样 : #include<stdio.h> #include<string.h> //求 杨辉三角形的第n行长啥样 int a[34]; int b[34]; int main(){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[1] = 1; a[2] = 1; b[1] = 1; int n; scanf("%d",&n); for(int i = 3;i <= n;i++){ for(int j = 2; j <= i-1;j++){ b[j] = a[j - 1] + a[j]; } b[i] = 1; for(int x = 1; x <= i;x++){ a[x] = b[x]; } } for(int i = 1;i <= n;i++) if(i == 1) printf("%d",a[i]); else printf(" %d",a[i]); return 0; } 思路: 需要两个数组a,b,先将a[1] = 1;a[2] = 1 再求第n行数组长啥样时,可以先以a为基础,计算b的值,然后将b复制进a 由上图的连线可以知道: for(int j = 2; j <= i-1;j++){ b[j] = a[j - 1] + a[j];