力扣118杨辉三角

本文解析了杨辉三角的规律,重点讲解了每行元素由上一行计算得出的方法,并提供了C++代码示例。通过观察和理解这个经典的数列,读者将掌握如何用代码生成任意行的杨辉三角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

请点击

思路

  • 观察杨辉三角
/*
    列0 1 2 3 4
第0行 1 
第1行 1 1
第2行 1 2 1
第3行 1 3 3 1
第4行 1 4 6 4 1
*/
  • 得到如下规律
    • 每行第一个元素与最后一个元素均为1
    • 该行其余元素的值等于 上行该位置前一个元素 + 上行该位置的元素
      即vecs[i][j]=vecs[i-1][j-1]+vecs[i-1][j];

代码

#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> generate(int numRows) {
    vector<vector<int> > vecs(numRows);
    vecs[0].emplace_back(1);
    if(numRows==1) return vecs;
    for(int i=1;i<numRows;i++){
        vecs[i].resize(i+1);
        vecs[i][0]=1;//每行第一个元素均为1
        vecs[i][i]=1;//每行最后一个元素均为1
        for(int j=1;j<i;j++){
            vecs[i][j]=vecs[i-1][j-1]+vecs[i-1][j];
        }
    }
    return vecs;
}
int main(){
    int n;
    cin>>n;
    vector<vector<int> > vecs=generate(n);
    for(int i=0;i<n;i++){
        for(int j=0;j<vecs[i].size();j++){
            cout<<vecs[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值