【题目链接】

ybt 2043:【例5.11】杨辉三角形

【题目考点】

1. 递推

递推问题要从以下3个方面着手分析:

  • 递推状态定义
  • 初始状态
  • 递推关系

【解题思路】

二维数组递推经典问题
我们要考察输出时杨辉三角各位置之间数值的递推公式。
根据示例:
1
1 1
1 2 1
1 3 3 1

假设空的位置的值都是0,将其存入二维数组,结果应该为

通过观察可知,第i行有i个元素,第1列的元素都是1,除了第1列的元素,根据杨辉三角的定义,每个元素(i,j)是其上方元素(i-1,j)及左上方元素(i-1,j-1)的加和。

  • 递推状态:a[i][j]:第i行第j列的值
  • 递推初始状态:a[i][1] = 1
  • 递推关系:a[i][j] = a[i-1][j] + a[i-1][j-1]

【题解代码】

解法1:递推

二维数组初始化为0,每行最后一个1通过递推关系,即由其左上及上方元素相加得到。

#include<bits/stdc++.h>
using namespace std;
int main()
{int n, a[25][25] = {};//注意:数组要初始化为0,这样让每行最后一个1也能通过递推关系得到 cin >> n;for(int i = 1; i <= n; ++i)for(int j = 1; j <= i; ++j)//每行有i个元素 {if(j == 1)a[i][j] = 1;//递推初始状态 elsea[i][j] = a[i-1][j] + a[i-1][j-1];//递推关系 }for(int i = 1; i <= n; ++i){for(int j = 1; j <= i; ++j)//每行有i个元素 cout << a[i][j] << ' ';cout << endl; }return 0;
}

解法2:递推

每行最后一个1通过特殊判断进行赋值

#include<bits/stdc++.h>
using namespace std;
int main()
{int n, a[25][25];cin >> n;for(int i = 1; i <= n; ++i)for(int j = 1; j <= i; ++j)//每行有i个元素 {if(j == 1 || j == i)a[i][j] = 1;//每行第1和最后1个数特殊处理 elsea[i][j] = a[i-1][j] + a[i-1][j-1];//递推关系 }for(int i = 1; i <= n; ++i){for(int j = 1; j <= i; ++j)//每行有i个元素 cout << a[i][j] << ' ';cout << endl; }return 0;
}

信息学奥赛一本通 2043:【例5.11】杨辉三角形相关推荐

  1. 信息学奥赛一本通1267:【例9.11】01背包问题(二维dp与滚动数组优化)

    [题目描述] 一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1,W2,...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,. ...

  2. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  3. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  4. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  5. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

  6. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  7. 信息学奥赛一本通——2062:【例1.3】电影票

    2062:[例1.3]电影票 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 57341     通过数: 34230 [题目描述] 已知一位小朋友的电影票价是10 ...

  8. 信息学奥赛一本通C++语言-----2036:【例5.3】开关门

    [题目描述] 宾馆里有n(2≤n≤1000)n(2≤n≤1000) 个房间,从1∼n1∼n 编了号.第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是22 的倍数的房间"相反处理& ...

  9. 信息学奥赛一本通——2068:【例2.6】鸡兔同笼

    大家好(๑╹◡╹)ノ" 这里是小蒟蒻 一天没更新了呢! 今天给大家带来<信息学奥赛一本通--2068:[例2.6]鸡兔同笼> 题目: 2068:[例2.6]鸡兔同笼 时间限制: ...

最新文章

  1. ubuntu -- 不输入密码执行sudo
  2. Redis,MemCached,MongoDB 概述
  3. 你不知道的JavaScript-0
  4. django 学习 (二) 模板
  5. 4005基于邻接表的顶点的删除(C++,附思路)
  6. echarts折线图怎么从y轴开始_基于echarts的双y轴实时更新折线图
  7. ubantu系统之快捷键使用
  8. HALCON 20.11:深度学习笔记(12)---语义分割
  9. 【转载】C#使用is关键字检查对象是否与给定类型兼容
  10. python应用系列教程——python使用smtp上传邮件,使用pop3下载邮件
  11. Linux 同步小命令
  12. linux 编译chromium,chromium(linux环境)指定版本下载和编译教程
  13. 北德克萨斯大学计算机系,美国北德克萨斯大学计算机科学与工程系主任Barrett Bryant访问昆明理工大学...
  14. primordials is not defined错误,正确的解决方案 亲测 完美 好用
  15. 揭开Docker的神秘面纱
  16. 如何用Python量化“相似K线”实现形态选股?
  17. 2022-4-4 基于单片机的MQ2烟雾报警(风吹摇铃 奔赴星海)
  18. 【黑马Java笔记+踩坑】MyBatisPlus基础
  19. 使用MaxCompute搭建社交好友推荐系统
  20. 数码管动态显示c语言,《手把手教你学51单片机-C语言》之六 中断与数码管动态显示...

热门文章

  1. [原]那些年整理的Linux常用命令,简单明了
  2. 金钱能让人更快乐吗?手把手教你用机器学习找到答案
  3. 阿里公开600页技术图(附下载链接),程序员看完少走10年弯路! | 干货
  4. python traceback most recent_pyspider启动错误: Traceback (most recent call last):
  5. 垃圾oracle_第 14 章 垃圾回收概述
  6. 双十一我们在作战室干什么?零点刚过,我偷偷提交了几行代码!
  7. 一道大题决定去留:为什么synchronized无法禁止指令重排,却能保证有序性?
  8. pick王菊?作为“菊外人”的程序员能做点什么?
  9. 忽悠CTO搞中台,把自己饭碗都搞砸了
  10. P3-weixin 微信插件式开发规范