C140 杨辉三角
- 题目
- 题解(94)
- 讨论(102)
- 排行
- 面经
new
简单 通过率:29.57% 时间限制:1秒 空间限制:256M
知识点C++工程师牛客
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
描述
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输入描述:
第一行包含一个整数数n。 (1≤n≤30)
输出描述:
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
思路:
每次放入一个1,因为杨辉三角最右侧一定都是1,然后先输出本行,再去构造对应位置的下一行,注意构造应当从右往左,因为每一个位置的构造需要用的对应下标和对应下标前一个,如果从左往右,对于i位置来说,其i-1位置已经是更新过的下一行杨辉三角的数了,就会出现错误。
#include <iostream>
#include<vector>
#include<stdio.h>
using namespace std;
int main() {
int n;
cin>>n;
vector<int>num;
while(n--)
{
num.push_back(1);
for(int i=0;i<num.size();i++)
{
printf("%5d",num[i]);
}
for(int i=num.size()-1;i>=1;i--)
{
num[i]=num[i]+num[i-1];
}
cout<<endl;
}
}
// 64 位输出请用 printf("%lld")