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

如何选择坪山网站建设公司网站seo外包

如何选择坪山网站建设,公司网站seo外包,做不锈钢百度网站哪个比较好,网站开发过程和里程碑Leetcode 3283. Maximum Number of Moves to Kill All Pawns 1. 解题思路2. 代码实现 题目链接:3283. Maximum Number of Moves to Kill All Pawns 1. 解题思路 这一题坦率地说没有想到什么好的思路,因此只能非常暴力地按照题意进行了一下构造。 显然…
  • Leetcode 3283. Maximum Number of Moves to Kill All Pawns
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3283. Maximum Number of Moves to Kill All Pawns

1. 解题思路

这一题坦率地说没有想到什么好的思路,因此只能非常暴力地按照题意进行了一下构造。

显然,这个题目可以拆分为两个小题目:

  1. 给出任意 50 × 50 50\times50 50×50的棋盘上的两个点A和B,求令马从点A跳到点B所需的最小步数。
  2. Alice和Bob的吃兵游戏。

其中,前者本应有一些比较漂亮的解答的,这里我倒是没有想到啥好的,最后就是暴力的走了一个宽度优先的遍历。

而关于第二小题,我们的解法则更加暴力,就是分别构造了两个耦合的动态规划算法来翻译了一下题目的过程,其伪代码如下:

def dp_alice(position, status):if status == 2**n-1:return 0return max(step(position, points[i]) + dp_bob(points[i], status | (1 << i)) for i in range(n) if status & (1 << i) == 0)def dp_bob(position, status):if status == 2**n-1:return 0return min(step(position, points[i]) + dp_alice(points[i], status | (1 << i)) for i in range(n) if status & (1 << i) == 0)

这里,我们用一个整数的二进制上的位来记录每一个坐标位置 i i i上的兵是否已经被吃掉了。

2. 代码实现

给出最终的python代码实现如下:

@lru_cache(None)
def move(x0, y0, x1, y1):dirs = [(1, 2), (1, -2), (-1, 2), (-1, -2), (2, 1), (2, -1), (-2, 1), (-2, -1)]if abs(x0-x1) == 2 * abs(y0-y1):return abs(y0-y1)if abs(y0-y1) == 2 * abs(x0-x1):return abs(x0-x1)q = [(0, abs(x0-x1) + abs(y0-y1), x0, y0)]seen = {(x0, y0)}while q:step, _, x, y = heapq.heappop(q)for dx, dy in dirs:if x + dx == x1 and y+dy == y1:return step+1if 0 <= x+dx < 50 and 0 <= y+dy < 50 and (x+dx, y+dy) not in seen:seen.add((x+dx, y+dy))heapq.heappush(q, (step+1, abs(x+dx-x1) + abs(y+dy-y1), x+dx, y+dy))return math.infclass Solution:def maxMoves(self, kx: int, ky: int, positions: List[List[int]]) -> int:n = len(positions)END = 2**n-1@lru_cache(None)def dp_alice(x, y, status):if status == END:return 0ans = 0for i in range(n):if status & (1 << i) != 0:continuex1, y1 = positions[i][0], positions[i][1]ans = max(ans, move(x, y, x1, y1) + dp_bob(x1, y1, status | (1 << i)))return ans@lru_cache(None)def dp_bob(x, y, status):if status == END:return 0ans = math.inffor i in range(n):if status & (1 << i) != 0:continuex1, y1 = positions[i][0], positions[i][1]ans = min(ans, move(x, y, x1, y1) + dp_alice(x1, y1, status | (1 << i)))return ansreturn dp_alice(kx, ky, 0)

提交代码评测得到:耗时11035ms,占用内存119MB。

http://www.zhongyajixie.com/news/16557.html

相关文章:

  • 电子商城网站制作数据库百度网盘搜索入口
  • 专业定制网站制作公司自建网站
  • 网站建设学习网站如何做好线上推广
  • 网站策划过程上海关键词优化的技巧
  • 怎么在百度搜到自己的网站营销的手段和方法
  • 企业网站seo营销宁波网站建设推广平台
  • 网站如何优化流程谷歌网页版
  • 网站中文章内图片做超链接域名停靠网页推广大全
  • 网站后台数据库怎么做美国疫情最新情况
  • 门户网站建设情况汇报艾滋病多久能检查出来
  • 企业门户网站开发代码外媒头条最新消息
  • 品牌建设实施细则seo建站教程
  • 上饶建设银行网站什么是seo技术
  • 建立网站所需费用项目清单国家高新技术企业认定
  • 网站开发团队需要几个人网页设计制作网站模板图片
  • 内江网站开发站长之家查询域名
  • 想百度搜到网站新域名怎么做最近营销热点
  • zencart网站时间问题最新网站查询工具
  • Pc端做社区网站用什么框架百度app浏览器下载
  • 怎样做公司网站建设搜索引擎优化方案案例
  • 武汉网站建设吧搜索排名广告营销
  • 顺德专业网站制作福州seo优化排名推广
  • 摄影网站做画册自己怎么制作一个网站
  • 东莞企业网站建设预算大概多少营销策划思路
  • 如何在电脑上建设网站自助发稿
  • 网站设计有限公司怎么样seo自学教程推荐
  • 免费下软件的网站搜索引擎竞价推广的优势
  • 建设网站的规则如何把网站推广出去
  • 模板制作视频seo每日一帖
  • 帝国cms如何做网站地图网络优化公司哪家好