目录

  • 回溯法原理
  • 回溯法之迷宫问题
    • 代码

回溯法原理

可以参考我的另一篇博客。

回溯法之迷宫问题

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;
}

回溯法之迷宫问题(华为笔试题)相关推荐

  1. 基本算法-回溯法(迷宫问题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 本文介绍一种经典算法--回溯法,可作为迷宫问题的一种解法,以下是本篇文章正文内容,包括算法 ...

  2. 华为笔试题---明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...

  3. php生成迷宫图片,PHP实现基于回溯法求解迷宫问题的方法详解

    本文实例讲述了PHP实现基于回溯法求解迷宫问题的方法.分享给大家供大家参考,具体如下: 引言 最近在leetcode上看了些算法题,有些看着很简单的很常用的东西,竟然一下子想不出来怎么求解,比如说:实 ...

  4. C语言学习日记(12)——回溯法解迷宫(1)

    走迷宫是一种经典的智力游戏,相信很多人都玩过.我们走迷宫的过程一般是这样的:从入口开始尝试,如果走到某个位置有几种方案可以选择,则选择其中的一种方案进行尝试,不断重复这个过程.如果走不通,就回退到前一 ...

  5. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  6. 华为笔试题 -- 多个数组按顺序合并(Java代码实现)

    华为笔试题 – 多个数组按顺序合并(Java代码实现) 题目描述: 现在有多组整数数组,需要将他们合并成一个新的数组.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉 ...

  7. 2019届华为笔试题(软件卷)

    华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...

  8. java实现回溯算法,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  9. 2014-百度 阿里 华为笔试题

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  10. 【有返回值的回溯法】剑指offer——面试题66:矩阵中的路径(回溯法)

    剑指offer--面试题66:矩阵中的路径(回溯法) Solution:1 典型的回溯算法及代码 此题是回溯法的典型例题,思路以及代码均是书中所讲.要具体实现很有参考价值,借鉴之! 现在把书中代码贴在 ...

最新文章

  1. JSP--JavaBean
  2. Java compiler level does not match解决方法
  3. IIS的真正并发数及扩展并发的办法
  4. 华为21级程序员月薪曝光:270k封神!众网友直呼长见识……
  5. 共享内存进程线程混合通信
  6. Google 浏览器(2011)书签同步
  7. C#生成Excel出现8000401a的错误的另一种解决办法。
  8. OFD板式文档阅读器
  9. Xposed框架的使用--简单入门
  10. 机房的防火墙有何作用
  11. 视频录制软件有哪些?4款录制视频软件,免费下载
  12. css实现3d立体魔方
  13. 家用无线路由器的选购技巧
  14. WebGL着色器内置变量gl_PointSize、gl_Position、gl_FragColor、gl_FragCoord、gl_PointCoord
  15. 除夕跨年烟花特效[原创]
  16. 一键安装mysql5.7
  17. tring.Format格式化用法
  18. CSDN2018博客之星评选——期待各位大佬的投票!哈哈
  19. python测试-9-7
  20. 【期权课堂】第5课 期权价格的平价关系

热门文章

  1. 极客学院30天免费vip
  2. c#明华rf读卡器_C#调用第三方API接口-案例明华读卡器
  3. ArchLinux安装蓝牙驱动
  4. 计算机控制lc72131,锁相环频率合成器—LC72131.PDF
  5. Matlab的语言概述
  6. 自动驾驶仿真:如何通过TCP方式进行VTD驾驶员仿真
  7. pta初级题库151-200
  8. 视频教程-Dubbo视频教程-Java
  9. 北京2018积分落户名单
  10. 如何构建全球最佳数据中心平台