劍值offer12.矩陣中的路徑
阿新 • • 發佈:2022-01-20
題面:
樣例:
題解:暴力搜尋,加上相等剪枝。
程式碼:
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; } };