当前位置: 首页 > wzjs >正文

网站主要应用湖南seo博客seo交流

网站主要应用,湖南seo博客seo交流,成都旅游季节最佳时间是几月份,wordpress 模版教程数字三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那…

数字三角形

题目描述

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

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

输入描述

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

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

一、若无红色加粗文字:

代码:

##数字三角形
#斜着走
##动态规划
##状态:dp[i][j]表示从i,j出发可以达到的最大值
##状态转移:左下方或者右下方加起来取值最大 当前状态可以由之前的什么子问题得来,肯定是希望
##从当前位置走到下方值大的一个数字,那么和还要加上当前的,由于需要后面的因此倒起来
##最后一行为边界条件,等于自己,从最后一行开始往下走最大值就是自己
##max(dp[i+1][j],dp[i+1][j+1])+a[i][j]
n=int(input())
a=[]
for i in range(n):a.append(list(map(int,input().split())))
dp=[[0]*(n+1) for _ in range(n+1)]
for i in range(n-1,-1,-1):for j in range(i+1):
##        注意这里是i+1 每行i个数字 上面是n-1 相当于-2故这里是i+1if i==n-1:dp[i][j]=a[n-1][j]else:dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j]print(dp[0][0])

二、有红色加粗文字 :


代码:

这里的意思相当于不管前面是怎么走的,前面求出的就是相应位置会得到的最大值,在最后结果那里判断,根据左右步数不超过1,而不超过1的情况有3种,例如左右左偏左,右左右偏右,以及左右左右这种,因此可以发现如果是走奇数步那么一定会偏,走偶数步那么一定会回到正中间。因此后面直接判断即可,同时这里其实没有要求那么严没有在走的过程中保持不超过1 

动态规划

##数字三角形
##动态规划
##dp[i][j]表示达到i行j列的时候可以取得的最大值
##状态转移 从左上右上而来,还是两者都可以取最大值
n=int(input())
a=[]
dp=[[0]*(n) for _ in range(n)]
for i in range(n):
##从0开始    a.append(list(map(int,input().split())))
dp[0][0]=a[0][0]
for i in range(1,n):for j in range(i+1):
##       从上方而来if j==0:dp[i][j]=dp[i-1][j]+a[i][j]
##       从左上方来elif j==i:dp[i][j]=dp[i-1][j-1]+a[i][j-1]
##     可以来自左上方也可以来自右下方else:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j]
##如果是奇数其实走的是偶数步 要达到不超过1 那么回到中线
##dp[n][j//2]
##如果是偶数,其实走的是奇数步 那么即可能偏左也可能偏右
##    就取最大值两边的  
if n%2==0:print(max(dp[n-1][n//2-1],dp[n-1][n//2]))
else:print(dp[n-1][n//2])

深度优先搜索: 

代码:

import sys
import os
sys.setrecursionlimit(10000000)
n=int(input())
a=[]
ans=0
for i in range(n):a.append(list(map(int,input().split())))
##深度优先搜索
def dfs(depth,col,tot,left,right):
##    当前所处的行 列 和 左下方次数 右下方次数
##    depth表示第i行if depth==n-1:global ansif abs(left-right)<=1:ans=max(ans,tot)returnif col<len(a[depth+1]):dfs(depth+1,col,tot+a[depth+1][col],left+1,right)if col+1<len(a[depth+1]):dfs(depth+1,col+1,tot+a[depth+1][col+1],left,right+1)
dfs(0,0,a[0][0],0,0)
print(ans)

http://www.dtcms.com/wzjs/423034.html

相关文章:

  • wordpress 本地服务器天津seo优化公司
  • 上海网站建设公司服务怎么做爱站网关键词怎么挖掘
  • 柞水县住房和城乡建设局网站网站排名查询站长之家
  • 聚名网靠谱吗如何优化网络速度
  • 如何自己做购物网站模板网站建站哪家好
  • app 微信 网站三合一app优化方案
  • wordpress comerseo发帖软件
  • 长春专业做网站搜索词排行榜
  • wordpress中的网易云北京seo教师
  • 怎么做伪静态网站如何写好软文
  • 站长工具日产一二三企业网站首页
  • 食品电子商务网站建设规划书搜索引擎推广的优势
  • 网站建设中怎么编辑图片seo查询排名软件
  • 技术支持 东莞网站建设母婴护理免费的网站推广软件
  • 企业建站报价照片查询百度图片搜索
  • 青海公司网站建设哪家好类似58的推广平台有哪些平台
  • 广东省建设厅官方网站电话哈尔滨seo整站优化
  • 国外黄色网站推荐百度助手下载
  • 天津市网站建设公司二十条优化措施原文
  • 网站建设合同范本网站建设服务商
  • 北京网站制作业务如何开展seo营销外包公司
  • 九江网站建设就在刚刚武汉宣布最新消息
  • 购物网站配色怎么设计一个网站可以优化多少关键词
  • 网站首页滚动页面公司广告推广方案
  • 图片做动画网站国产十大erp软件
  • 个体户能做网站备案吗seo搜索引擎优化书籍
  • 免费网站安全青岛seo博客
  • 做饲料机的川工网站衡水seo培训
  • 有关建设旅行网站的建设今天刚刚发生的新闻台湾新闻
  • 温州做网站费用国家卫生健康委