精华内容
下载资源
问答
  • 杨辉三角与倒置杨辉三角

    千次阅读 2018-03-29 17:27:31
    杨辉三角问题: 杨辉三角是按照一定规律排列而成的数字。在这里我们可以用程序来进行输出,比较容易。 首先用C语言说明问题代码,在本文章最后有C++的代码供...所谓的杨辉三角每一行的数字都有来源,是它的肩膀上...

    杨辉三角问题:
    杨辉三角是按照一定规律排列而成的数字。在这里我们可以用程序来进行输出,比较容易。
    首先用C语言说明问题代码,在本文章最后有C++的代码供参考。

    杨辉三角的形式为:
    *
    **
    *
    实际上我们可以对他进行简化:
    *
    **


    然后加上输出几个空格,这样子就变成了三角行了。。

    所谓的杨辉三角每一行的数字都有来源,是它的肩膀上的两个数字相加而成的,在使用二维数组的同时,可以用语句:

    a[i][j]=a[i-1][j]+a[i-1][j-1]

    然后配合空格的输出完成:(上代码)

        #include<stdio.h>
        int main()
        {
            int n,a[10][10]={0},i,j,k;
            while (scanf("%d",&n)!=EOF&&(n>=1&&n<=10))
            {
                for(i=0;i<n;i++)
                {
                    for(j=0;j<=i;j++)
                    {
                        if(i==j||j==0)    //买一行的第一个是1加上对角线是1
                            a[i][j]=1;
                        else
                            a[i][j]=a[i-1][j]+a[i-1][j-1];//其余的用肩膀上的两个数字相加
                    }
                }
    
             //输出程序:(倒置的杨辉三角输出)
                for(i=0;i<n;i++)
                {
                    for(j=0;j<i;j++)     //输出空格
                        printf("   ");   //空格由少变多
                    for(k=0;k<n-i;k++)
                    {
                        printf("%3d",a[n-i-1][k]);     //倒着从数组里边取出数字输出
                        printf("   ");
                    }
                    printf("\n");
                }
                printf("\n");
            }
            return 0;
             //正杨辉三角输出:
            for(i=0;i<n;i++)
                {
                    for(j=n-i;j>0;j--)
                          printf("  ");
                    for(k=0;k<=i;k++)
                        {
                            printf("%3d",a[i][k]);
                            printf("   ");
                        }
                        printf("\n");
                }
      }
    
    展开全文
  • 杨辉三角形规律

    千次阅读 2018-10-25 16:45:40
    杨辉三角形如图  1  1 1  1 2 1  1 3 3 1 1 4 6 4 1 我们假定用一个二维数组num存储 我们可以发现每一行的首尾都是1. 从第三行非1的数是由它上一行...

    杨辉三角形如图



                    1
                1        1
            1        2        1
        1        3        3        1
    1        4        6        4        1



    我们假定用一个二维数组num存储
    我们可以发现每一行的首尾都是1.
    从第三行非1的数是由它上一行的对应位置的数加上左前位置的数所得的。
    即,num[i][j] = num[i-1][j]+num[i-1][j-1]


    我们现在举例说明:
    我们假设要求出杨辉三角形前10行数据


    源代码:

    #include<iostream>
    #include<cstdio>
    #include<iomanip>
    #include<cstring>
    using namespace std;
    
    int num[101][101];
    
    int main()
    {
    	memset(num,0,sizeof(num));
    	num[1][1] = 1;   //初始化第一行的数 
    	
    	for(int i = 2;i<=10;i++)
    	{
    		num[i][1] = 1;
    		num[i][i] = 1;
    		for(int j = 2;j<=i;j++)
    		{
    			num[i][j] = num[i-1][j]+num[i-1][j-1];
    		}
    	}
    	
    	for(int i = 1;i<=10;i++)
    	{
    		for(int j = 1;j<=i;j++)
    		{
    			cout<<setw(5)<<num[i][j];
    		}
    		cout<<endl;
    	}
    	
    	return 0;
    }

    个人搭建博客链接:

    http://47.107.118.184

     

    展开全文
  • 杨辉三角规律

    万次阅读 2015-02-28 15:15:26
    杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的种几何排列。以下为 n = 5 的杨辉三角。 1 1 2 1 1 3 1 2 1 4 1 3 3 1 5 1 4 6 4 1 性质 1、个数等于它上方两数之和。 2、...

    引言

    杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。以下为 n = 5 的杨辉三角。

    1行          1
    2行       1     1
    3行    1    2    1 
    4行  1   3    3    1
    5行 1  4   6    4    1

    性质

    1、每个数等于它上方两数之和。
    2、每行数字左右对称,由1开始逐渐变大。
    3、第n行的数字有n项。
    4、第n行数字和为2n-1
    5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)(组合数性质
    之一)[1] 
    6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即
    [2] 
    7、第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同元素中取m-1个元素的组合数。
    组合数计算方法:C(n,m)=n!/[m!(n-m)!]
    8、(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。[3] 
    9、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数
    10、将各行数字相排列,可得11的n-1(n为行数)次方:1=11^0; 11=11^1; 121=11^2……;细心的人可能会发现当n≥5时会不符合这一条性质,其实是这样的:把第n行的最右面的数字"1"放在个位,然后把左面的一个数字的个位对齐到十位... ...,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n-1次方。以n=11为例,第十一行的数为:1,10,45,120,210,252,210,120,45,10,1;

    C语言代码实现打印输出

    网上很多都是利用二维数组实现,对于 n 很小的情况下,当然可以,但对于n比较大的时候,二维数组就比较消耗内存了,以下方法直接利用第7条性质,直接计算输出杨辉三角,代码如下所示。

    #include<stdio.h>
    
    
    void print_yanghui_triangle(int n)
    {
    <span style="white-space:pre">	</span>int i, j, k, s;
    <span style="white-space:pre">	</span>for(i = 1; i <= n; i++)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>for(j = 1; j <= i; j++)
    <span style="white-space:pre">		</span>{
    <span style="white-space:pre">			</span>s = 1;
    <span style="white-space:pre">			</span>k = 1;
    <span style="white-space:pre">			</span>//计算第 i 行的第 j 个数 
    <span style="white-space:pre">			</span>for(k = 1; k < j; k ++)
    <span style="white-space:pre">			</span>{
    <span style="white-space:pre">				</span>s = s * (i - k)/k;
    <span style="white-space:pre">			</span>}
    <span style="white-space:pre">			</span>printf("%2d\t", s);
    <span style="white-space:pre">		</span>}
    <span style="white-space:pre">		</span>printf("\n");
    <span style="white-space:pre">	</span>}
    }
    int main()
    {
    <span style="white-space:pre">	</span>int n = 0;
    <span style="white-space:pre">	</span>
    <span style="white-space:pre">	</span>printf("Input line of YangHui Triangle: ");
    <span style="white-space:pre">	</span>scanf("%d", &n);
    <span style="white-space:pre">	</span>print_yanghui_triangle(n);
    <span style="white-space:pre">	</span>
    <span style="white-space:pre">	</span>return 0;
    }
    

    输出结果如下:

    Input line of YangHui Triangle: 9
     1
     1       1
     1       2       1
     1       3       3       1
     1       4       6       4       1
     1       5      10      10       5       1
     1       6      15      20      15       6       1
     1       7      21      35      35      21       7       1
     1       8      28      56      70      56      28       8       1
    


    总结

    注意计算第 i 行第 j 列数字的方法,示范代码的计算方式,能够避免很快溢出(按照公式计算,大概 n = 13 就为负数了)。本示范代码,能够计算到 n = 30,改成 long long型,能够处理更多,但仍然避免不了最终溢出。

    展开全文
  • 我们可以发现每一行都有对应的n个数,而除了第一行外,每一行的第一个数和最后一个数都为一,其中间的数可以为上一个数 + 左斜上方的数字。 比如 f[1][1] = 1, f[2][1] = 1,f[2][2] = 1. f[3][1] = 1,f[3][2] ...

    1.问题描述:

    在这里插入图片描述

    2.找规律:

    我们可以发现如果用一个二维数组表示杨辉三角,如下
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    我们可以发现每一行都有对应的n个数,而除了第一行外,每一行的第一个数和最后一个数都为一,其中间的数可以为上一个数 + 左斜上方的数字。
    比如
    f[1][1] = 1,
    f[2][1] = 1,f[2][2] = 1.
    f[3][1] = 1,f[3][2] = f[2][1] + f[2][2] = 1 + 1 = 2,f[3][3] = 1.
    f[4][1] = 1,f[4][2] = f[3][1] + f[3][2] = 1 + 2 = 3,f[4][3] = f[3][2] + f[3][1] = 1 + 2 = 3,f[4][4] = 1
    不难发现规律,除了第一行以外其他行的第一个数和最后一个数为1,中间的数为
    在这里插入图片描述
    这就是递推公式。

    3.源代码:

    #include <iostream>
    using namespace std;
    typedef long long ll;
    const int N = 55;
    ll f[N][N];
    
    void init() {
        for (int i = 1; i < N; ++i) {
            for (int j = 1; j <= i; ++j) {
                if (j == 1) {
                    f[i][j] = 1;
                } else {
                    f[i][j] = f[i - 1][j - 1] + f[i - 1][j];
                }
            }
        }
    }
    
    int main () {
        init();
        int n,m;
        cin >> n >> m;
        cout << f[n][m] << endl;
        return 0;
    }
    

    欢迎关注
    ly’s Blog

    展开全文
  • 杨辉三角

    2020-12-06 14:29:28
    给定个非负整数 numRows,生成杨辉三角的前 numRows 。 在杨辉三角中,个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 解题思路:找到杨辉三角的...
  • 1、每一行的第一个数和最后一个数均为1 2、第 i 行第 j 列的数 = 第 (i-1) 行 (j-1) 列的数+第(i-1)第 j 列的数 首先来看一看如何用数组的方式打印杨辉三角: #include <stdio.h> void yanghuitiangle(int ...
  • 其一般形式如图 1 所示,行开始和结尾处的数字都为 1,其他数字都是它所在行的上一行中靠近它的两个数之和。图 1:杨辉三角形请编程输出其中的前 n(n≤20)行。问题分析输入:一个正整数,表示杨辉三角形的行数。...
  • 打印10杨辉三角

    2020-12-16 16:16:34
    每一行的第一个元素和最后一个元素都是1 * 3.从第三行开始,对于非第一个元素和非最后一个元素,存在这样的规律: * yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j] */ public class ArrayTe
  • 如果我们输出杨辉三角形前4行,那么行需要的数组长度(也就是最后一行第四行需要的数组长度)为24-1=7,以此类推,如果是输出杨辉三角形前50行,我们通过规律可知第50行需要的数组大小为250-1=99.因为杨辉三角形...
  • 杨辉三角形

    2020-03-04 19:08:08
    题目 打印杨辉三角形(行数可以键盘录入) ...B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。 程序代码 import java.util.Scanner; public class YanghuiTriangle { pub...
  • Java打印杨辉三角

    2021-02-17 09:03:15
    1.首先定义一个有值的二维数组,找到该数组的中心位置,再用for循环赋值每一行两边的1 中心点±行索引 2.求出杨辉三角的两条边后接下来求杨辉三角内部的值,由于杨辉三角中的每一个的值都是前一行的相邻的两个值的...
  • 杨辉三角Java

    2019-11-07 21:25:08
    什么是杨辉三角杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,...每一行除了第一个和最后...
  • 打印杨辉三角

    2021-04-17 09:34:52
    打印杨辉三角 杨辉三角,是二项式系数在三角形中的一种几何排列。...2.个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,
  • JAVA实现杨辉三角的三种方式

    万次阅读 多人点赞 2019-01-05 20:21:03
    一、前言 既然是实现杨辉三角,就要知道什么是杨辉三角。如下图,就是两种杨辉三角。 (1)等边形状的杨辉三角 ... 每一行的开始和结尾数字都为1. 用二维数组表示就是a[i][0]=1; a[i][j]=1(当i==j时); ...
  • = 2行开始,每一行的数值(不包含两边的数值)都是上一行两个数字的相加。 当 J=1 或 J=N+1时, 其值为:1 当 J != 1 且 J != N+1时:其值为第N-1行的第J-1个值于 第N-1行的第J个值的和 如图 代码如下: //定义一...
  • C语言 杨辉三角

    2021-01-02 15:17:43
    Description 杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。...每组输入对应输出n层的杨辉三角每一项占4个字符,除了每开始
  • 在做这道题时首先要观察杨辉三角规律11 11 2 11 3 3 11 4 3 4 1……可以看出1.每行的数字个数与所处行数相等2.除去每行个和最后个数字唯一,其他数字都等于头顶元素加头顶前个元素源代码:#include#include...
  • Java实现杨辉三角形

    2019-12-02 11:30:33
    一:前言 实现杨辉三角,需要知道什么是杨辉三角...每一行的开始和结尾数字都为1. 用二维数组表示就是a[i][0]=1; a[i][j]=1(当i==j时); 第n+1行的第i个数字等于第n行的i-1个数字加上第n行的i个数字。 用二维数组表...
  • ** 用Java输出杨辉三角数的前34 ** **1.**新建一个Java项目,名字自取;...**3.**根据杨辉三角规律,依次填充每一个位置 **4.**遍历数组并打印,使用for循环 **5.**写一个main函数进行测试 **6.**运...
  • C语言杨辉三角

    千次阅读 2019-03-27 12:10:57
    杨辉三角是中国古代数学的杰出研究成果之,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是种离散型的数与形的结合 主要 特征 个数等于它上方两数之和。 每行数字左右对称,...
  • java直角杨辉三角形

    2020-07-16 13:58:12
    3.从第3行开始,除了每一行第一列,每一行最后一列外,其余的元素 = 上一行的前一列 + 上一行的本列(具体看图) 编程思路: 1.把每一个数字看作是一个元素,运用二维数组解决,前面说有几行就有几列,所以可以设为...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 250
精华内容 100
关键字:

杨辉三角每一行规律