添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

[编程题]求最短通路值

用一个整形矩阵matrix表示一个网格,1代表有路,0代表无路,每一个位置只要不越界,都有上下左右四个方向,求从最左上角到右下角的最短通路值

例如,matrix为:

1 0 1 1 1

1 0 1 0 1

1 1 1 0 1

0 0 0 0 1

通路只有一条,由12个1构成,所以返回12

[要求]
时间复杂度为

给定一个N x N 的数字 矩阵 , 每个点都有一个正整数(大小为0-9),从 左上角 出发, 每次只能向右或者向下移动一个单位,直到走到 右下角 为止。求得一条路线,使得这条路线上的数字和最小。 第一行输入 N 表示数字 矩阵 为N行N列 第二行到第 N+1行,每行N个数字 表示N x N 矩阵 第一行输出该路线上的数字和 第二行输出这条路线上的各个数字的行号和列号(如果有多条路径,输出任意一条)
arr=[[1,1,1],[5,1,1],[1,1,1],[1,5,7],[1,1,1]] m,n=5,3 weight=[[float("inf")]*n for _ in range(m)] for i in range(m): for j in range(n): if i==0 and j==0: weight[i][j]=arr[i][j] else: cur_min=float("inf") 一个机器人位于一个 m x n 网格 左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到 网格 右下角 (在下图中标记为“Finish”)。 问总共有多少条不同的路径? 解法一 直接递归 class Solution { public: int UniquePaths(int m,int n,int p,int q...
一个元素值要么0,要么1的 矩阵 ,假设0是断路,1是通路,从 左上角 元素开始,向右或者向下走,走到 右下角 。判断能不能走到,如果能,路径长度是多少? 便利蜂开发岗3.20笔试第三道 算法 题 这道题我百度居然没有找到现成的答案,逼着我自己想。 首先想到的是动态规划求 最短路径 可以先将01 矩阵 中的所有0元素替换成一个超大的数(例如106),然后照搬动态规划求 最短路径 ,如果路径大于106,说明没有通路。 但是这个方法也太别扭了,像睿智想出来的。 重新想的思路 这道题复杂度应该是比求 最短路径 要低的,因为只要 使用广度遍历法来找最优解。 广度遍历:使用数组,9!=362880,用362880完全可以装完所有的图形 使用bitmap来保存该图形是否到过。0-8表示图形,用3bit表示一个小块,使用1bit表示0在低位还是高位,4bit表示0所处位置。一个图形保存在一个u32中就好了。 所以bitmap的大小事28bit
该类题目还有一种问法 假设有一个6*6的棋盘,每个格子里面有一个奖品(每个奖品的价值在100到1000之间),现在要求从 左上角 开始到 右下角 结束,每次只能往右或往下走一个格子,所经过的格子里的奖品归自己所有。问最多能收集价值多少的奖品。(最多就是max,最短就是min) 这里是引用 [1,3,1], [1,5,1], [4,2,1] 输出: 7 Explanation: Because the path 1→3→1→1→1 minimizes the sum. 在这里插入代码片
题目:给定一个n*m的 矩阵 矩阵 中元素非负,从 左上角 右下角 找一条路径,使得路径上元素之和最小,每次只能向右或者向下走一个方格。如下图所示: 最短路径 是图中绿色部分的元素。 方法一(转换为图中的 最短路径 ):我们可以把 矩阵 中的每个方格当做图中的一个顶点,相邻的方格之间有一条边,每个方格最多有两条出边,(当前方格到右侧方格有一条出边,当前方格到下侧方格有一条出边)。我们把 矩阵 中的 最短路径