4方向搜索递归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_26408419/article/details/82982660

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

猜你喜欢

转载自blog.csdn.net/baidu_26408419/article/details/82982660