首页 > 其他分享 >杭电OJ 2032杨辉三角

杭电OJ 2032杨辉三角

时间:2024-03-10 16:56:09浏览次数:23  
标签:OJ 递归 int 复杂度 杭电 MAXN 杨辉三角 递推

杨辉三角
杨辉三角形这一题型,属于分治法,如果我们使用递归来处理,可以解决但是时间复杂度太高,为\(O(2^n)\),会超时错误,所以应该用递推法,一行一行的把值保存下来,减少大量的重复计算,这样时间复杂度为\(O(n)\),还不错。

当然解题思路,无论是递归还是递推,都是一样的,总结递归公式、及递归出口(可能不止一个)。

#include <iostream>
#include <cstdio>

using namespace std;
const int MAXN = 30 + 5;

struct Triangle {
    int arr[MAXN][MAXN];
    int row, col;
};
Triangle answer;

//递推法求杨辉三角形
void yang_triangle(int n) {
    for(int i = 1; i <= n; ++i) {
        for(int j = 0; j < i; ++j) {
            if(j == 0 || j == i - 1) {
                answer.arr[i-1][j] = 1;
            } else {
                answer.arr[i-1][j] = answer.arr[i-2][j-1] + answer.arr[i-2][j];
            }
        }
    }
}

int main()
{
    int n;
    while(cin >> n) {
        yang_triangle(n);
        //output
        for(int i = 1; i <= n; ++i) {
            for(int j = 0; j < i; ++j) {
                if(j == 0) {
                    cout << answer.arr[i-1][j];
                } else {
                    cout << " " << answer.arr[i-1][j];
                } 
            }
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}

标签:OJ,递归,int,复杂度,杭电,MAXN,杨辉三角,递推
From: https://www.cnblogs.com/paopaotangzu/p/18064364

相关文章

  • 杭电OJ 2028求n个数的最小公倍数
    LowestCommonMultiplePlus首先,求a、b两个数的最小公倍数很简单,只要先求出其最大公约数,再\(a*b/GCD(a,b)\)。那么求n个数的最小公倍数,思路也是一样的。但是OJ判题一直WA,查了一下别的博客,发现错误的原因是在求公倍数的过程中要先除再乘,防止溢出,即\(a/GCD(a,b)*b\)以及要......
  • 下载Project 2021专业版项目管理软件
    Project2021专业版是微软公司推出的一款功能强大的项目管理软件,可以帮助用户有效地规划、执行和控制项目。主要功能:项目计划:Project2021专业版可以帮助用户创建详细的项目计划,包括任务列表、时间表、资源分配等。资源管理:Project2021专业版可以帮助用户有效地管......
  • Qt开发,报错:Error while building/deploying project untitled (kit: ....)
    1、问题描述 Qt开发,编译时,报错如下:1Cannotfindfile:F:\linux\...\Console.pro.213:49:47:进程"D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe"退出,退出代码2。3Errorwhilebuilding/deployingprojectConsole(kit:DesktopQt5.14.2MSVC201764bit)4......
  • Blazor笔记-Project Struct
    更新记录注意:非教程。纯笔记,日常查询用的。需要教程的小伙伴找几本书看看即可哈哈,有Vue基础的话非常快,概念都是通的。非工作需要不建议深入学习Blazor,深入Vue吧,用的多,哈哈。完整目录地址:https://www.cnblogs.com/cqpanda/p/17596348.html点击查看2024年3月7日发布。2023......
  • Project2021专业版项目管理软件官网下载安装
    Project2021专业版是微软公司开发的一款功能强大的项目管理软件,可帮助用户有效地规划、管理和控制项目。它提供了丰富的功能和工具,可以帮助用户:创建和管理项目计划分配资源和任务跟踪项目进度管理项目预算沟通和协作分析项目绩效Project2021专业版的主要功能包括:......
  • 杨辉三角形
    杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:1111211331给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前......
  • 力扣118.杨辉三角
    题目:给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。实现方法:从第三行开始,通过循环,依次求取上一行相邻两数的和,添加到结果里。funcgenerate(numRowsint)[][]int{ varr[][]int fori:=0;i<nu......
  • CatOJ C0493C 计数 分讨
    对于\(\sum|E'|\),直接计算是简单的。对于\(\sum|E'|^2\),拆下贡献,可以拆成\(\sum\sum_{i,j\inE'}1\),设\(U\)为\(i\)和\(j\)两条边连接的点集,转化一下式子即为\(\sum_i\sum_j2^{n-|U|}\)。对于\(\sum|E'|^3\)同理,\(U\)为\(i,j,k\)三条边连接的点集,原式即为\(......
  • 由POJ1821得出的一些dp优化技巧
    比如for(inti=1;i<=m;i++){ for(intj=0;j<=n;j++){ dp[i][j]=dp[i-1][j]; } for(intl=max(1,s[i]-l[i]+1);l<=s[i];l++){for(intr=s[i];r<=min(n,l+l[i]-1);r++){dp[i][r]=max(dp[i][r],dp[i-1][l-1]+p[i]*(r-l+1));......
  • IDEA更新本地代码丢失,IDEA使用Update Project更新本地代码丢失
    问题原因提交代码前,IDEA更新Git本地代码丢失,IDEA使用UpdateProject更新Git本地代码丢失,更新代码时执行UpdateProject操作。执行完该操作会发现IDEA没有任何提示,默认覆盖了你本地还未提交的代码,本地呕心沥血写的代码瞬间人间蒸发解决办法LocalHistory(本地历史更改记录)当出现......