利用5*5大小的英文字母格子进行的游戏。规则是:连接上下左右、对角线方向上相邻的字母,组成一个单词。
实现代码如下:
/*
*Boggle.cpp
*
* Created on: 2015年9月22日
* Author: sl
*/
#include<iostream>
using namespace std;
const int dx[8] = {-1,-1,-1,1,1,1,0,0};
const int dy[8] = {-1,0,1,-1,0,1,-1,1};
char board[5][5] = {
{'N','N','N','N','A'},
{'N','E','E','E','N'},
{'N','E','Y','E','N'},
{'N','E','E','E','N'},
{'N','N','N','N','N'}
};
bool inRange(int y, int x){
if(x<0|| y<0 || x>=5 ||y>=5)
returnfalse;
elsereturn true;
}
//下面函数返回从字母格子(y,x)起始的单词是否存在
bool hasWord(int y, int x, conststring& word){
if(!inRange(y,x))return false;
if(board[y][x]!=word[0])return false;
if(word.size()==1)return true;
for(intdirection = 0;direction<8;direction++){
intnextY = y+dy[direction], nextX = x+dx[direction];
if(hasWord(nextY,nextX,word.substr(1)))
returntrue;
}
returnfalse;
}
int main()
{
cout<<hasWord(2,2,"YEA");
}