二维数组---杨辉三角
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。