1. 程式人生 > 其它 >劍值offer12.矩陣中的路徑

劍值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; } };