二维数组---杨辉三角

二维数组---杨辉三角

时间: 1ms        内存:128M

描述:

杨辉三角
Description
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。

输入:

一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。

输出:

输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。

示例输入:

4

示例输出:

1 
1 1 
1 2 1 
1 3 3 1 

提示:

参考答案(内存最优[924]):

#include<stdio.h>
int main()
{
    int n,i,j,a[50][50];
    while(scanf("%d",&n)!=EOF)
    {
        for(i=1; i<=n; i++)
        {
            a[i][1]=1;
            a[i][i]=1;
        }
        for(i=3; i<=n; i++)
            for(j=2; j<i; j++)
                a[i][j]=a[i-1][j]+a[i-1][j-1];
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=i; j++)
            {
                printf("%d ",a[i][j]);
                if (j<i);

                else
                    printf("\n");
            }
        }
        printf("\n");
    }
    return 0;
}

参考答案(时间最优[0]):

/*
 分析:

    可以将杨辉三角形的值放在一个二维数组中
	
    杨辉三角形具有如下特点;

    (1)第1列和对角线上的元素都为1。(各行第一个数都是1,各行的最后一个数也是1)

    (2)除第1列和对角线上的元素以外,其它元素的值均为前一行上的同列元素和前一列元素之和。
	   a[i][j]=a[i-1][j-1]+a[i-1][j]   i为行,j为列

*/

#include <iostream>
using namespace std;
int main()
{
  const int maxsize=31;
  int i,j,a[maxsize][maxsize];
  int n;
  cin>>n;
  for (i=1;i<=n;i++)  //第1列和对角线上的元素都为1。(各行第一个数都是1,各行的最后一个数也是1)
    {
	  a[i][i]=1;
      a[i][1]=1;
    }

  for (i=3;i<=n;i++)  //其它元素的值均为前一行上的同列元素和前一列元素之和。
    for (j=2;j<=i-1;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++)
       cout<<a[i][j]<<" ";
     cout<<endl;
    }

  return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注