2019年4399暑期实习算法题2,迷宫路径条数

实在太菜了,前段时间刚刚做过迷宫问题,也做过N皇后问题。今天笔试做这个题,虽然明白是迷宫问题加个回溯就可以了,但愣是没做出来。太菜了,下来又花了点时间才做出来。

问题:一个(X,Y)的迷宫,入口左上角,出口右下角,求出走出迷宫的路径的条数。

# 算法:
def solution(map, row, col, x, y, count):
    if x <= row-1 and y <= col-1 and map[x][y] == 0:
        if x == row-1 and y == col-1:
            return 1
        else:
            return solution(map, row, col, x + 1, y, count) + solution(map, row, col, x, y + 1, count)
    else:
        return 0

# 测试数据:
map = [[0, 0, 0, 0, 1],
       [1, 0, 0, 0, 1],
       [1, 0, 0, 0, 1],
       [1, 1, 0, 0, 1],
       [1, 1, 1, 0, 0]]

k = solution(map, 5, 5, 0, 0, 0)
print(k)

# 答案是 9

还得继续学习,一些算法题的拓展还需要学习,还要不断复习啊

原文地址:https://www.cnblogs.com/ChangAn223/p/10987211.html

时间: 2024-08-01 22:20:00

2019年4399暑期实习算法题2,迷宫路径条数的相关文章

搜狗2019秋招的一道算法题:龟兔赛跑

时间限制:3秒 空间限制:92160K 定义如下图所示的比赛地图: S表示比赛起点,E表示比赛终点.实线表示陆路,虚线表示水路.兔子只能走陆路,乌龟既可以走陆路也可以走水路.每条路径的长度在图中给出.假定兔子和乌龟足够聪明,问谁先到达终点. 输入描述: 第1行输入v1,v2.v1是兔子的速度,v2是乌龟的速度(水路.陆路速度相同).第2行输入n,m,点的编号是1~n,然后是m行,其中1是起点,n是终点(路径本身不限定方向).下面m行4个数 a, b, d, c,表示a和b之间有一条边,且其长度为

腾讯2017暑期实习编程题3

题目描述: 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,相差最小的有多少对呢?相差最大呢? 输入描述 : 输入包含多组测试数据. 对于每组测试数据: N - 本组测试数据有n个数 a1, a2...an - 需要计算的数据 保证 : 1 <= N <= 100000, 0 <= ai <= INT_MAX. 输出描述 : 对于每组数据,输出两个数,第一个数表示差最小的对数,第二个数表示差最大的对数. 输入例子1 :645 12 45 32 5 6 输出例子1 :1

【算法题10 不同路径问题】

1.不同路径 I:来源LeetCode62题 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为"Finish"). 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格.有多少可能的路径? 说明:m 和 n 的值均不超过 100. class Solution: def uniquePaths(self, m, n): "&qu

力扣算法题—064最小路径之和

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [   [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小. 1 #include "_000库函数.h" 2 3 //使用Dijkstra算法 4 //即动态规划 5 class Solution { 6 public: 7 int minPathSum(vec

力扣算法题—062不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格.有多少可能的路径? 说明:m 和 n 的值均不超过 100. 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角. 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下

每周一道算法题001:回文数

题目: 找出大于10的最小的2进制,8进制,10进制都是回文数的最小的数.回文数指的是正读和反读都是一样的数,例如:33,10001,123454321... 思路: 先转换进制,然后统一处理成字符串进行比较 解答: PHP function execute(){ $x = 11; while (1) { if ($x == strrev($x) && decbin($x) == strrev(decbin($x)) && decoct($x) == strrev(deco

python每日经典算法题5(基础题)+1(中难题)

现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级函数的应用.这些题目是在某些刷题的网站上登记的有水平的题目.这里如果有需要input的简单题,就略去了输出结果.如果时间充裕,则就会增加每日更多习题. 一:基础算法题10道 1.判断用户输入的年份是否为闰年 题目解析: (1)问题分析:能被4整除但不能被100整除的年份为普通闰年,能被400整除的年

python每日经典算法题5(基础题)+1(较难题)

一:基础算法题5道 1.阿姆斯特朗数 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数.判断用户输入的数字是否为阿姆斯特朗数. (1)题目分析:这里要先得到该数是多少位的,然后再把每一位的数字截取出来,把各位数字的n次方之和和该数一起判断即可.(2)算法分析:python中有len()函数可以得到一个字符串的长度,因此需要先把一个正整数转化为正整数字符串.然后从高位向低位截取(也可以反过来).或者高效算法利用for循环切片. 从高位到低位:用正整数除了10的n次方,得到的商就

LiberOJ #6002. 「网络流 24 题」最小路径覆盖

#6002. 「网络流 24 题」最小路径覆盖 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 给定有向图 G=(V,E) G = (V, E)G=(V,E).设 P PP 是 G GG 的一个简单路(顶点不相交)的集合.如果 V VV 中每个顶点恰好在 P PP 的一条路上,则称 P PP 是 G GG 的一个路径覆盖.P PP 中路径可以从 V VV 的任何一个顶点开始,