4方向搜索递归

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 16:14   11   0

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP