使用python打印数字三角形_11届省赛python试题 H: 数字三角形

试题 H: 数字三角形

【问题描述】

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最

大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右

边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

【输入格式】

输入的第一行包含一个整数 N (1 < N ≤ 100),表示三角形的行数。下面的

N 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。

【输出格式】

输出一个整数,表示答案。

【样例输入】

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

【样例输出】

27

方法一

思路(递归):

利用递归的形式来完成从上到下的遍历,首先创建函数fin(x,y,c,dx,dl) x,y表示q列表的位置,c为累加的数,dx,dl分别表示左右走的步数。u=[[1,0],[1,1]]左右位置,让函数不断的递归所有位置的可能。时间复杂度均为o(2**n)0。

程序:

a=int(input())

q=[]

for _ in range(a):

q.append(list(map(int,input().split())))

mx=0

u=[[1,0],[1,1]]

def fin(x,y,c,dx,dl):

global mx

for i in range(2):

d=x+u[i][0]

l=y+u[i][1]

if d>=a:

if mx

mx=c

return

elif i==0:

fin(d,l,c+q[d][l],dx+1,dl)

else:

fin(d,l,c+q[d][l],dx,dl+1)

fin(0,0,q[0][0],0,0)

print(mx)

方法二

思路(动态规划):

DP推导+奇偶判断。在输入数组的时候进行数组值的计算,因为只能向左或者右走,即我现在所在的位置坐标是从上一层这个位置的左边或者上边进行跳转得到的坐标,通过选择最大值进行跳转,更新数组的值,由于向左向右不能超过1,所以通过奇偶判断层数,如果是奇数,最后的位置第a层,第(a//2)位置上的数字,如果是偶数,则需要判断第n层,第(a/2-1)位置的数字和第a层第(a/2 )位置的数字,选大的。

注意我的数组下标是从0开始。

程序:

a=int(input())

q=[]

for _ in range(a):

q.append(list(map(int,input().split())))

for i in range(a):

for i1 in range(i):

try :

q[i][i1]+=max(q[i-1][i1-1],q[i-1][i1])

except:

if i1==0:

q[i][i1]=q[i-1][i1]

else:

q[i][i1]=q[i-1][i1-1]

print(q[a-1][int(a/2)] if a%2==1 else max(q[a-1][a/2-1],q[a-1][a/2]))

禁止转载。仅用于自己学习。对程序错误不负责。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csdn博客markdown 如何输入上下标(如平方指数等)

csdn博客markdown 如何输入上下标&#xff08;如平方指数等&#xff09; 输入上标&#xff0c;如&#xff1a;x2&#xff0c;则输入x^2^ 输入下标&#xff0c;如&#xff1a;x0&#xff0c;则输入 x~0~

取消语法检测_中考取消了考纲,学生要如何得高分

日前&#xff0c;教育部宣布取消初中学业水平考试大纲。对于广州的考生而言&#xff0c;意味着中考考纲取消。连日来&#xff0c;这一消息引发了学生、家长、老师们的巨大关注。为此&#xff0c;广州日报邀请了广州大学附属中学语文一级教师王琪、数学高级教师罗剑文以及广州广…

java中的ListNode链表

ListNode 刷LeetCode碰到一个简单链表题&#xff0c;题目已经定义了链表节点ListNode struct ListNode {int val; //定义val变量值&#xff0c;存储节点值struct ListNode *next; //定义next指针&#xff0c;指向下一个节点&#xff0c;维持节点连接}在节点ListNode定义…

暴风酷播云二期配置_暴风播酷云二期 黑群晖

暴风播酷云二期 安装黑群晖 全记录安装前准备硬件准备拆机&#xff0c;主板扣掉电池后&#xff0c;用螺丝刀或其他导体连接主板上放置纽扣电池的正负极造成短路放电。软件准备下载群晖引导文件&#xff0c;本文中采用1.04b&#xff1b;下载群晖系统文件&#xff0c;群晖官网即可…

判定覆盖与条件覆盖的区别

判定覆盖与条件覆盖的区别 判定覆盖只关心判定表达式的值&#xff08;真/假&#xff09;&#xff0c;而条件覆盖涉及到判定表达式的每个条件的值&#xff08;真/假&#xff09;。 举个最简单的例子&#xff0c;方便理解&#xff1a; 判定表达式&#xff1a;a>1 or b>1…

mysql scrapy 重复数据_MySQL大数据量表中删除重复记录

MySQL大数据量表中删除重复记录最近工作中需要抓取大量新闻&#xff0c;抓取的数据中由于一些原因存在一些重复数据&#xff0c;而整个数据表的记录数接近10万条&#xff0c;大小接近1个G&#xff0c;又在我自己的渣渣本本上&#xff0c;查询速度十分不理想&#xff0c;想要完成…

某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导

软件测试——决策表 10.某公司为本科以上学历的人重新分配工作&#xff0c;分配原则如下。 (1)如果年龄不满18岁&#xff0c;学历是本科&#xff0c;男性要求报考研究生&#xff0c;女性则担任行政工作; (2)如果年龄满18岁不满5o 岁&#xff0c;学历本科&#xff0c;不分男女&…

分布式锁 哨兵模式_手撕redis分布式锁,隔壁张小帅都看懂了!

前言上一篇老猫和小伙伴们分享了为什么要使用分布式锁以及分布式锁的实现思路原理&#xff0c;目前我们主要采用第三方的组件作为分布式锁的工具。上一篇运用了Mysql中的select …for update实现了分布式锁&#xff0c;但是我们说这种实现方式并不常用&#xff0c;因为当大并发…

.某学校的学生公寓有14栋楼,用A~N这14个大写字母的其中一个代表楼号,每栋楼的层数为6层,用1~6六个数字表示。每层楼有40个房间,编号为01~40。具体表示一个宿舍房间时,用1个字母加3位数字表

软件测试——等价类划分法 1.某学校的学生公寓有14栋楼&#xff0c;用A&#xff5e;N这14个大写字母的其中一个代表楼号&#xff0c;每栋楼的层数为6层&#xff0c;用1&#xff5e;6六个数字表示。每层楼有40个房间&#xff0c;编号为01&#xff5e;40。具体表示一个宿舍房间时…

python 贪吃蛇大作战_python实现简单贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下代码&#xff1a;from turtle import *from random import randrangefrom time import sleep### 定义变量snake [[0,0],[10,0],[20,0],[30,0],[40,0],[50,0]]apple_x rand…

如何免费下载和安装Windows 11

微软今天放出了 Windows 11 Build 22000.51 预览版&#xff0c;如果你想要尝鲜或者冒险&#xff0c;那么本文分享如何免费下载和安装 Windows 11 的小技巧。再次需要提醒的是&#xff0c;目前 Windows 11 系统极不稳定&#xff0c;充斥着大量 BUG&#xff0c;可能会导致系统崩溃…

python函数被调用才能执行吗_python3x函数在不被调用的情况下运行

这是我的密码code__author__ Jared Reabow__name__ Assignment 2 Dice game#Date created: 14/11/2014#Date modified 17/11/2014#Purpose: A game to get the highest score by rolling 5 virtual dice.import random#pre defined variablesNumberOfDice 5 #this variable …

Java 为什么数组下标只能为int不能为long?int32位,为何最大值不是2^32 -1 ? java基本类型取值范围

一个小标为int的byte数组全部放满东西需要的内存为&#xff08;2^31-11&#xff09;*1b2Gb0.25GB 一个小标为long的byte数组全部放满东西需要的内存为&#xff08;2^631)*1b 需要的内存太大 &#xff01;&#xff01; byte&#xff1a; byte 数据类型是8位、有符号的&#xf…

输出分组_通过分组卷积的思想,巧妙的代码实现动态卷积(Dynamic Convolution)

论文的题目为《Dynamic Convolution: Attention over Convolution Kernels》paper的地址https://arxiv.org/pdf/1912.03458.pdf代码实现地址&#xff0c;其中包含一维&#xff0c;二维&#xff0c;三维的动态卷积&#xff1b;分别可以用于实现eeg的处理&#xff0c;正常图像的处…

java基本数据类型转为String类型的4种常见方法

1.toString 先把基本数据类型装箱&#xff0c;再用对象的toString()方法 2.String类的valueOf方法 这是一个静态方法&#xff0c;几乎可以把各种类型转换为字符串 String.valueOf(); 注意区别包装类的valueOf方法,那个也是静态方法&#xff0c;返回的是包装类型。 3.加一…

北大青鸟消防控制器组网_北大青鸟JBF-61S20防火门监控器控制器接线示意图

北大青鸟JBF-61S20防火门监控器控制器接线示意图一&#xff0c;北大青鸟JBF-61S20防火门监控器控制器接线示意图功能防火门控制及状态 监测功能手动、自动关闭常开防火门&#xff1b;实时监控常开或常闭防火门的状态信息&#xff0c;并进行上报和显示。联网功能监控器可以与青鸟…

Java的Comparator排序(升序降序)理解

Java的Comparator排序&#xff08;升序降序&#xff09;理解 int compare(T o1, T o2);   这里o1表示位于前面的对象&#xff0c;o2表示后面的对象 返回-1&#xff08;或负数&#xff09;&#xff0c;表示不需要交换01和02的位置&#xff0c;o1排在o2前面&#xff0c;asc 返…

sqlserver发布订阅无法初始化快照_SQLServer2008R2 发布订阅及相关问题解决办法

前言&#xff1a;前两天接到领导的任务&#xff0c;将一个系统A的客户数据同步到另一个系统B中&#xff0c;以后客户录入入口只有A系统&#xff0c;B系统不提供录入入口&#xff0c;因为各种原因不能使用接口方式A系统和B系统直接交互同步&#xff0c;只能通过数据库重A库同步到…

JAVA中基本类型Boolean占几个字节

今天在整理JAVA基础知识时发现几大基本数据类型的封装类都有其BYTES值,也就是位数,除了Boolean。特意查了下资料,发现有几大说法,如下&#xff1a; 1.单个的boolean 类型变量在编译的时候是使用的int 类型。 boolean atrue;//这个a在JVM中占4个字节即&#xff1a;32位。 2.bo…

怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口

在本指南中&#xff0c;我们将学习如何更改MySQL / MariaDB数据库在CentOS 7和基于Debian的Linux发行版中绑定的默认端口。 MySQL数据库服务器在Linux和Unix下运行的默认端口是3306 / TCP 。为了在Linux中更改默认的MySQL / MariaDB数据库端口&#xff0c;请通过执行以下命令打…