杨辉三角
时间限制: 1S类别: 二维数组->简单
晚于: 2023-11-17 23:55:00后提交分数乘系数50%
问题描述 :
还记得中学时候学过的杨辉三角吗?
基本的特征是:
前提:端点的数为1.
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
你可以参考以下的图形:
输入说明 :
输入数据首先包含一个正整数T ( T < 10 ),表示有 T 组测试数据, 每组测试数据只包含一个正整数n(1 <= n <= 20),表示将要输出的杨辉三角的层数。
输出说明 :
对应于每一个输入,请输出相应层数的杨辉三角,输出的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
输出时,每一行的开头的“1”前面不需要空格,结尾的“1”后面也没有空格。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int k,m;
cin>>k;
vector<vector<int>>arr(k);
arr[0]= {1};
if (k > 1)
arr[1] = {1, 1};
int i;
for(i=2; i<k; ++i)
{
arr[i].resize(i + 1);
arr[i][0]=1;
arr[i][i]=1;
for(int j=1; j<i; j++)
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
for(m=0; m<k; ++m)
{
for(int j=0; j<arr[m].size(); j++)
{
cout<<arr[m][j];
if(j<arr[m].size()) cout<<" ";
}
cout<<endl;
}
cout<<endl;
}
return 0;
}