#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
int result = 0;
//输入要查找的单词以及单词大小:
string findmy = "mcn";
int sizeFind = 3;
vector<vector<char>>ininA = { { 'p','a','b','x' },{'a','m','c','h'},{'p','b','n','w'},{'q','g','h','t'} };
//查找单词findmy在不在这个矩阵里面,在不在的定义:从首字母开始,上下左右搜索得到即可。
vector<vector<int>>visited= { { -1,-1,-1,-1 },{ -1,-1,-1,-1 },{ -1,-1,-1,-1 },{ -1,-1,-1,-1 } };
//search():实现初始递归
void search(int idx,int row,int column)
{
if (row < 0 || row>3 || column < 0 || column>3 || visited[row][column]==1)
return;
if (findmy[idx] != ininA[row][column])
return;
else
{
if (idx == sizeFind-1)
{
result = 1;
return;
}
else
{
visited[row][column] = 1;
search(idx + 1, row + 1, column);
search(idx + 1, row - 1, column);
search(idx + 1, row, column + 1);
search(idx + 1, row, column - 1);
}
}
}
int main()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
cout << ininA[i][j]<<" ";
cout << endl;
}
cout <<"******"<< endl;
///////////////////////////////////////////////
search(0, 1,1);
if (result == 1)
cout << "yes" << endl;
else
cout << "no" << endl;
return 0;
}

|