题目:小明站在一间贴满黑白相间瓷砖的房间里,小明站在黑色瓷砖处,小明处于好奇,希望每次只向相邻黑色瓷砖移动,现在小明想知道自己最多可以踩到多少块黑色瓷砖。

输入描述:第一行输入两个整数M、N,分别表示房间的长宽,也就是横竖瓷砖的数目

从第二行开始接下来的M行N列输入瓷砖类型,*表示黑色瓷砖,.表示白色瓷砖,@符号表示小明当前所在的黑色瓷砖

当输入的M,N都为0时,结束输入。

代码:

#include <iostream>
#include <vector>
using namespace std;//深度优先搜索合法瓷砖数目的递归核心函数
//param@1 brickArr瓷砖数组,包含每个位置的瓷砖情况,*表示黑色瓷砖,.表示白色瓷砖,@表示起始位置的黑色瓷砖
//param@2 flagArr标记数组,用于记录某个位置是否被访问过
//param@3 startX起始递归处的X坐标
//param@4 startY起始递归处的Y坐标
//param@5 brickCount符合条件的瓷砖数目
void dfsCore(vector<vector<char>> brickArr,vector<vector<int>>& flagArr,int startX,int startY,int& brickCount);int main()
{int M, N;while (cin >> M >> N){if (0==M && 0==N){break;    //输入全为0则结束输入和计算}vector<vector<char>> brickArr(M, vector<char>(N,'#'));  //瓷砖数组int startX, startY;   //起始点的X,Y坐标//以下两个for循环用于输入瓷砖数据for (int i = 0; i < M;++i){for (int j = 0; j < N;++j){cin >> brickArr[i][j];if (brickArr[i][j] == '@')  //明确表明的初始位置{startX = i;startY = j;}}}vector<vector<int>> flagArr(M,vector<int>(N,0));//标记数组int blackBrickCount = 0;    //符合条件的瓷砖数dfsCore(brickArr,flagArr,startX,startY,blackBrickCount);cout << blackBrickCount << endl;}return 0;
}void dfsCore(vector<vector<char>> brickArr, vector<vector<int>>& flagArr, int startX, int startY, int& brickCount)
{//检查坐标是否合法if (startX >= 0 && startX < brickArr.size() && startY >= 0 && startY < brickArr[0].size()){if (flagArr[startX][startY] != 1)  //未被访问过{flagArr[startX][startY] = 1;if (brickArr[startX][startY] == '*' || brickArr[startX][startY] == '@')   //如果为黑色瓷砖{++brickCount;}dfsCore(brickArr, flagArr, startX - 1, startY, brickCount);   //上边dfsCore(brickArr, flagArr, startX, startY + 1, brickCount);    //右边dfsCore(brickArr, flagArr, startX + 1, startY, brickCount);    //下边dfsCore(brickArr, flagArr, startX, startY - 1, brickCount); //左边}}
}

笔试题-计算图中黑色瓷砖数(深度优先遍历的使用)相关推荐

  1. 怎么制作一个笔试题库?会计笔试题库中的题型分析?

    目前各个考试都会有对应的笔试题库供大家学习,因为现在笔试题库作为了一种产品,目前我国的笔试考试越来越多了,笔试题库也层出不穷.下面我就来介绍一下笔试题库,我们如何选择一个全面好用的笔试题库.福昕知翼有 ...

  2. 中软融鑫 java笔试题_中软国际java笔试题

    中软国际Java程序员笔试题 Java程序员笔试题 1.谈谈final, finally, finalize的区别. 2.Anonymous Inner Class (匿名内部类) 是否可以exten ...

  3. 2016阿里实习线上笔试题-附加题1-随机数生成器

    随机数生成器 计算机使用的随机数生成器往往是伪随机的,为了达到统计意义上的真随机数,可以需要引入系统 外的变量等作为随机种子(如UNIX系统中熵池).假设有一天出现了上帝的投硬币函数: int G() ...

  4. 中软融鑫 java笔试题_中软融鑫2014校招java开发工程师笔试题

    如果你想要应聘中软融鑫的java开发工程师岗位,小编下面分享的内容就是中软融鑫2014校招所考的试题,感兴趣的朋友赶紧收藏吧! 一.选择题 1.下列表达式正确的()? A.byte b = 128; ...

  5. 完美世界:笔试题(最小漂流船只数累计,主城之间的最小距离迪杰斯特拉)...

    第一题 第一道题要计算的是最小漂流船,已知每艘船最多可以承载2人,但是重量不能超过limit,求最少需要多少船只? 第一行输入的是参与人员的体重数组,第二行输入的是漂流船承载的最大重量.求最小船只数? ...

  6. 中国航信 java笔试题_中国航信笔试题整理(2020)

    下列哪一个不属于正则表达式限定符( ) A. {n,m} B. {n,} C. {n} D. {$} TCP/IP协议层的网络接口层对应OSI的( ) A. 物理层 B. 链路层 C. 网络层 D. ...

  7. 金证部分笔试题--前中后序、IP地址分类、三次握手、BIO,NIO,AIO等

    1.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是? 解题需要知道的知识点:前序中序和后序 (1)先看下面简单的二叉树 A:根节点,B:左子节点,C:右子节点 前序: ...

  8. 2014阿里巴巴校园招聘笔试题(中南站)

  9. 100家大公司java笔试题汇总

    NHN CHINA公司笔试题 1.在这写代码 Var array1 = [10,20]; Var array2 = [8,5]; Var result = array1.add(array2); Al ...

最新文章

  1. 刚刚!中国高校毕业生薪酬排名Top100出炉!
  2. SQLServer 扫盲
  3. Python入门篇-数据结构堆排序Heap Sort
  4. php 函数封装上传,PHP(多)文件上传实现和函数封装
  5. 多中心临床大数据平台建设及深度应用
  6. 【需求对接】ATR“春雨”博士后联合基金指南
  7. java hashSet
  8. 只能选择分卷文件的第一部分_【教程】分卷解压教程
  9. 用tinypng插件创建gulp task压缩图片
  10. 使用Java将图片转成Base64编码,并压缩至40k
  11. Centos 设置开机自动启动脚本
  12. Ubuntu 404 Not Found [IP: 91.189.95.85 80]解决办法
  13. 庆祝JavaCard技术领导SmartCard技术超过五年
  14. CDN引入elementUI语言设置为英语
  15. 【学习笔记】计算机时代的统计推断(Bradley Efron and Trevor Hastie 著)
  16. 如何完成一次快速的查询
  17. 路由器端口映射失败排查方法
  18. 敏捷开发中的可用性测试
  19. 制作视频画中画 教你使用剪辑视频的软件同时制作多个视频
  20. IntelliJ IDEA激活地址License server

热门文章

  1. WEB代码:内嵌框架iframe、frame框架
  2. 信创生态 | 未来智安XDR与凝思安全操作系统完成产品兼容性互认证
  3. 博远CA移植文档说明
  4. python eve mysql_python Eve RESTFul 尝试笔记
  5. 2022年全球及中国家用雾化器行业头部企业市场占有率及排名调研报告
  6. 上传图片canvas获取点读内容 实现图片点读效果
  7. 香港计算机专业硕士学制几年,香港城市大学一年制硕士2021申请条件
  8. 供应商删除送货单步骤
  9. 360智能摄像头 android,360智能摄像机云台版
  10. 教徒计划出品:FreeNAS 8.0安装