剑值offer12.矩阵中的路径

题面:

 

 样例:

 

题解:暴力搜索,加上相等剪枝。

代码:

class Solution {
public:
    int n,m;
    int k;
    int dx[4]={-1,1,0,0};
    int dy[4]={0,0,-1,1};
    int vis[205][205];
    vector<vector<char>>board;
    string word;
    bool dfs(int x,int y,int u)
    {
        if(board[x][y]!=word[u])return false;
         if(u==k-1)return true;
        char y1=board[x][y];
        board[x][y]='#';
        for(int i=0;i<4;i++)
        {
            int tx=x+dx[i];
            int ty=y+dy[i];
            if(tx<0||ty<0||tx>=n||ty>=m)continue;
            if(dfs(tx,ty,u+1))
            return true;
        }
        board[x][y]=y1;
        return false;
    }
    bool exist(vector<vector<char>>& board1, string word1) {
        board=board1;
        word=word1;
            n=board.size();
            m=board[0].size();
            k=word.size();
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(word[0]==board[i][j])
                    {
                        if(dfs(i,j,0))
                         return true;
                    }
                }
            } 
            return false;
    }
};

 

posted @ 2022-01-19 19:32  cumtljz  阅读(19)  评论(0编辑  收藏  举报