回溯法之迷宫问题(华为笔试题)
目录
- 回溯法原理
- 回溯法之迷宫问题
- 代码
回溯法原理
可以参考我的另一篇博客。
回溯法之迷宫问题
2020/8/12日的华为笔试出了一道笔试迷宫问题的改版,题目大致的意思如下:
有一条刚贴地砖的路,强迫症小明走路每次走的步长一样,并且只走贴了地砖的地方,如果用1代表贴了地砖,用0代表没有地砖,问小明能否从左上角出发走到终点右下角。
例题:
输入
2
3 5
1 0 1 0 0
0 0 0 1 0
0 0 1 0 1
输出
true
其中2是步长,即小明一次走两步,3和5分别代表行数和列数。下面3行5列是代表有地砖和没有地砖。小明只要按照(0,0),(0,2),(2,2),(2,4)的路线就可以走到终点。
代码
这里的代码不仅能确定小明能否走到终点,而且能计算一共有几种走的方式。具体看下面的代码。
//经典的回溯法
//华为面试:走迷宫
#include <iostream>
using namespace std;
int path[3][5] = { {1,1,1,1,1},{0,0,0,0,1},{0,0,0,0,1} };
int step = 1;
int rowOut = 3;
int colOut = 5;
int way = 0;bool feasible(int row, int col)
{if (row < rowOut && col < colOut && row >= 0 && col >= 0 && path[row][col] == 1)return true;elsereturn false;
}void getPath(int row, int col)
{if (row == rowOut-1 && col == colOut-1)//到达终点{way++;return;}else{if (feasible(row, col + step))//是否可行{col += step;getPath(row, col);col -= step;//回溯} if (feasible(row + step, col)){row += step;getPath(row, col);row -= step;//回溯}}
}int main()
{cin >> step;cin >> rowOut >> colOut;for (int i = 0; i < rowOut; i++){for (int j = 0; j < colOut; j++){cin >> path[i][j];}}getPath(0, 0);if (way>0)cout << "OK! way=" << way << endl;elsecout << "false!" << endl;system("pause");return 0;
}
回溯法之迷宫问题(华为笔试题)相关推荐
- 基本算法-回溯法(迷宫问题)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 本文介绍一种经典算法--回溯法,可作为迷宫问题的一种解法,以下是本篇文章正文内容,包括算法 ...
- 华为笔试题---明明的随机数
题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...
- php生成迷宫图片,PHP实现基于回溯法求解迷宫问题的方法详解
本文实例讲述了PHP实现基于回溯法求解迷宫问题的方法.分享给大家供大家参考,具体如下: 引言 最近在leetcode上看了些算法题,有些看着很简单的很常用的东西,竟然一下子想不出来怎么求解,比如说:实 ...
- C语言学习日记(12)——回溯法解迷宫(1)
走迷宫是一种经典的智力游戏,相信很多人都玩过.我们走迷宫的过程一般是这样的:从入口开始尝试,如果走到某个位置有几种方案可以选择,则选择其中的一种方案进行尝试,不断重复这个过程.如果走不通,就回退到前一 ...
- 【leetcode】第394题:字符串解码(华为笔试题)
题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...
- 华为笔试题 -- 多个数组按顺序合并(Java代码实现)
华为笔试题 – 多个数组按顺序合并(Java代码实现) 题目描述: 现在有多组整数数组,需要将他们合并成一个新的数组.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉 ...
- 2019届华为笔试题(软件卷)
华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...
- java实现回溯算法,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- 2014-百度 阿里 华为笔试题
8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面拿出来两个球: ii.如果取出的是两 ...
- 【有返回值的回溯法】剑指offer——面试题66:矩阵中的路径(回溯法)
剑指offer--面试题66:矩阵中的路径(回溯法) Solution:1 典型的回溯算法及代码 此题是回溯法的典型例题,思路以及代码均是书中所讲.要具体实现很有参考价值,借鉴之! 现在把书中代码贴在 ...
最新文章
- JSP--JavaBean
- Java compiler level does not match解决方法
- IIS的真正并发数及扩展并发的办法
- 华为21级程序员月薪曝光:270k封神!众网友直呼长见识……
- 共享内存进程线程混合通信
- Google 浏览器(2011)书签同步
- C#生成Excel出现8000401a的错误的另一种解决办法。
- OFD板式文档阅读器
- Xposed框架的使用--简单入门
- 机房的防火墙有何作用
- 视频录制软件有哪些?4款录制视频软件,免费下载
- css实现3d立体魔方
- 家用无线路由器的选购技巧
- WebGL着色器内置变量gl_PointSize、gl_Position、gl_FragColor、gl_FragCoord、gl_PointCoord
- 除夕跨年烟花特效[原创]
- 一键安装mysql5.7
- tring.Format格式化用法
- CSDN2018博客之星评选——期待各位大佬的投票!哈哈
- python测试-9-7
- 【期权课堂】第5课 期权价格的平价关系