OJ:数字三角形(搜索)

news/2024/9/25 4:22:21/

🎁个人主页:我们的五年

🔍系列专栏每日一练

🌷追光的人,终会万丈光芒

🌷1.问题描述:

⛳️题目描述:

示出了一个数字三角形。  请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。  每一步可沿左斜线向下或右斜线向下走;  1< 三角形行数< 25;  三角形中的数字为整数< 1000;

❗️每次移动只能向下,或者向右下

⛳️输入格式:

第一行为N,表示有N行 后面N行表示三角形每条路的路径权

⛳️输出格式:

路径所经过的数字的总和最大的答案

⛳️输入样例:

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

⛳️输出样例:

30

 🌷2.实现代码:

方法一:递归

#include<stdio.h>
#include<math.h>
int s[30][30];
int max=0;    //max表示最大值
int n;
int dx[]={1,1},dy[]={0,1};
void fun(int x,int y,int sum)
{if(x==n){sum+=s[x][y];if(sum>max)max=sum;}else{sum+=s[x][y];fun(x+dx[0],y+dy[0],sum);fun(x+dx[1],y+dy[1],sum);}
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){scanf("%d",&s[i][j]);}}fun(1,1,0);printf("%d",max);return 0;
}

 方法二:循环+数组

#include<stdio.h>
#include<math.h>
int main()
{int n;scanf("%d",&n);int s[40][40]={0};for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){scanf("%d",&s[i][j]);}}for(int i=n;i>=1;i--){for(int j=1;j<i;j++){if(s[i][j]>s[i][j+1])s[i-1][j]+=s[i][j];elses[i-1][j]+=s[i][j+1];}}printf("%d",s[1][1]);return 0;
}

🌷 3.代码分析:

1.递归:

该题解应用dfs,对所以情况都一一列举了一下

从1,1位置开始,每次只能向下,或者右下,所以只要考虑x到达n行的位置,就可以计算sum的值。

2.循环+数组:

从第n行开始,去确定n-1行的大小,哪个数大就加上哪个数。


http://www.ppmy.cn/news/1427319.html

相关文章

Beego框架学习

Beego是一个使用Go语言开发的Web应用框架,它以其高效率和易用性而受到开发者的喜爱。以下是学习Beego框架的一些关键点: 了解Beego的特性:Beego框架支持RESTful和MVC模型,提供了一系列的模块功能,可以帮助开发者快速构建Web应用。它还包含一些高级功能,如监控代码修改进行…

椋鸟数据结构笔记#10:排序·中

文章目录 四、归并排序时间复杂度实现递归实现非递归实现 测试稳定性 五、非比较排序5.1 计数排序时间复杂度实现测试局限性 5.2 桶排序时间复杂度实现测试 5.3 基数排序时间复杂度实现测试局限性 萌新的学习笔记&#xff0c;写错了恳请斧正。 四、归并排序 归并排序是一种非常…

iOS知识点 --- Runtime

Objective-C (OC) 中的 Runtime 原理&#xff1a; Objective-C Runtime 是一套用于支持 Objective-C 动态特性的底层 C 语言 API。它为 Objective-C 提供了以下核心功能&#xff1a; 动态类型&#xff1a;在运行时确定对象的确切类型&#xff0c;允许在程序执行过程中进行类型…

常用node.js命令有哪些呢?

前言 Node.js 是一种在服务器端运行 JavaScript 的开放源代码、跨平台 JavaScript 运行环境。 1、查看当前安装的 Node.js 版本。 node -v 或 node --version 2、查看当前安装的 npm 版本。 npm -v 或 npm --version 3、初始化一个新的 Node.js 项目&#xff0c;会生成一个 pac…

算法学习——LeetCode力扣补充篇11(64. 最小路径和、48. 旋转图像 、169. 多数元素、394. 字符串解码、240. 搜索二维矩阵 II )

算法学习——LeetCode力扣补充篇11 64. 最小路径和 64. 最小路径和 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只…

【C++】飞机大战项目记录

源代码与图片参考自《你好编程》的飞机大战项目&#xff0c;这里不进行展示。 本项目是仅供学习使用的项目 飞机大战项目记录 飞机大战设计报告1 项目框架分析1.1 敌机设计&#xff1a;1.2 玩家飞机控制&#xff1a;1.3 子弹发射&#xff1a;1.4 游戏界面与互动&#xff1a;1.5…

PF滤波?

粒子滤波 本文是对于原文的学习与部分的转载 https://blog.csdn.net/weixin_44044161/article/details/125445579 粒子滤波是在目标跟踪中常用的一种方法 非线性条件下&#xff0c;贝叶斯滤波面临一个重要的问题是状态分布的表达与积分式的求解 由前面章节中的分析可以得知…

Okhttp 403 Forbidden

android App 在使用okhttp下载全国中小企业股份转让系统的pdf文件时候,下载完成后使用MuPDF无法解析,提示文件损坏或者不是PDF文件,查看Okhttp的下载请求,发现报403 Forbidden错误: {protocol=http/1.1, code=403, message=Forbidden, url=https://www.neeq.com