[各种面试题] 单词游戏
2013-09-21 20:38
225 查看
一个n*m的字母网格
判断是否能够在网格中找到给定的单词
样例:
就是LeetCode 的 Word Search。
grid,格子中的字母属于26个大写字母。选择某个格子作为起始点,每一步可以移动到上下左右相邻的格子中,这样遍历经过的字母组成了单词(每个格子只能访问一次)。
判断是否能够在网格中找到给定的单词
pattern。
样例:
n=3,m=4 Grid: PACD BGHI MNDC 对于pattern = "DCHGB",返回true。 对于pattern = "PBGNDC", 返回true。 对于pattern = "CIDCB",返回false。
就是LeetCode 的 Word Search。
bool travel(vector<vector<char> >& grid,int x,int y,string& pat,int k); bool exists(vector<vector<char> > &grid, string pattern) { int m=grid.size(); if (m==0) return pattern.empty(); int n=grid[0].size(); for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(travel(grid,i,j,pattern,0)) return true; return false; } bool travel(vector<vector<char> >& grid,int x,int y,string& pat,int k) { if ( k >=pat.size() ) return true; if ( x<0 ||x>=grid.size()||y<0||y>=grid[0].size()) return false; if (pat[k]!=grid[x][y]) return false; char tmp=grid[x][y]; grid[x][y]= '#'; //must not exist in pattern bool ret= travel(grid,x+1,y,pat,k+1)||travel(grid,x-1,y,pat,k+1) ||travel(grid,x,y+1,pat,k+1)||travel(grid,x,y-1,pat,k+1); grid[x][y]=tmp; return ret; }
相关文章推荐
- 洛谷 P1278 单词游戏
- 面试题:编程实现将字符串的各个单词翻转
- 英语各种词语句子单词汇总
- android悬浮球实现各种功能、快速开发框架、单词、笔记本、应用市场应用等源码
- 【剑指Offer学习】【面试题42:翻转单词顺序vs左旋转字符串】
- 上海某大型游戏公司Unity3D基础面试题
- 游戏服务器中应对各种外挂/作弊的策略
- 8月面试的几道编程基础题(持续更新各种面试题)
- 各种java面试题大全
- Unity 这个 3D 引擎很厉害吗?听说可以完成各种终端的游戏研发?
- 各种面试题资料: 博客、网页、网站、论坛、贴吧
- 结构之法 算法之道 博客地址 --- 对各种面试题的收集整理
- 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
- 游戏单词
- 【单词游戏】解题报告
- 10-11-C++游戏服务端面试题
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- Yii Framework 开发教程(4) Hangman 猜单词游戏实例
- Unity3D MineCraft 我的世界 用Unity3D制作类似MineCraft我的世界的游戏:各种树
- [经典面试题][百度]寻找兄弟单词