【笔试】算法的暴力美学——牛客 BC140:杨辉三角

一、题目描述

二、算法原理

思路:根据题目要求:每个数 = 左上方 + 上方的值的和,那么我们简单模拟就行了;

1)创建一个二维数组

2)先把第一个数字 1 入到二维数组中,以他为基准,让下面的数字不断的计算

3)不断的根据题目的要求计算当前的数字,每个数 = 左上方 + 上方的值的和,当我们计算出来的值等于 0 就没有必要入二维数组了,在杨辉三角中的值是没有等于 0 的;注意:当前我们只要计算出来杨辉三角的值就行了,不要注意格式输出;

4)控制格式输出,我们把杨辉三角的值转成 string ,当这个 string 的长度小于 5 时,就计算题目的长度差:5 - string.size();往 string 补充长度差个的空格;

三、代码实现

cpp 复制代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
    int n;
    cin >> n;

    vector<vector<int>> vis(n);
    vis[0].push_back({1});//初始化

    for(int i = 1; i < n; i++)//构造杨辉三角
    {
        int j = 0;
        while(true)//每行的数字的获取
        {
            //当前的数字 = (横坐标 - 1 ,纵坐标相同) + (横坐标 - 1 ,纵坐标 - 1)
            //注意越界情况
            int left = (j - 1 < 0 || j - 1 >= vis[i - 1].size()) ? 0 : vis[i - 1][j - 1];
            int right = j < vis[i - 1].size() ? vis[i - 1][j] : 0;
            int cout = right + left;
            if(cout == 0) break;
            vis[i].push_back(cout);
            j++; 
        }
    }

    int x = vis.size();

    for(int i = 0; i < x; i++)//打印杨辉三角,控制格式输出
    {
        for(int j = 0; j < vis[i].size(); j++)
        {
            string s = to_string(vis[i][j]);
            if(s.size() < 5)
            {
                int seq = 5 - s.size();
                string tmp(seq,' ');
                s = tmp + s;
            }
            cout << s;
        }
        cout << endl;
    }
    
    return 0;
}
相关推荐
心仪久了会沦陷1 分钟前
数据结构入门系列——顺序表详解:概念、分类与动态实现
c语言·数据结构·经验分享·笔记·开源
smj2302_796826525 分钟前
解决leetcode第4033题有效K个不同元素子数组I
数据结构·python·算法·leetcode
旖旎夜光1 小时前
LCR 173:在点名(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
重生之后端学习1 小时前
438. 找到字符串中所有字母异位词[中等]✅
开发语言·数据结构·算法·leetcode·职场和发展
LuminousCPP13 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
15 小时前
数据结构第一课:复杂度解析
数据结构
欧叶冲冲冲16 小时前
Python常见数据结构的CRUD(LeetCode高频版速查)
数据结构·python·leetcode
_Narcissus_17 小时前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
Lyyaoo.18 小时前
【普通数组】【中等】除了自身以外数组的乘积
数据结构·算法·leetcode
疯狂打码的少年19 小时前
【数据结构】八大排序算法对比总结(时间/空间/稳定性)
数据结构·笔记·算法