1. 程式人生 > 遊戲攻略 >《原神攻略》1.6版可莉武器、聖遺物及命之座推薦

《原神攻略》1.6版可莉武器、聖遺物及命之座推薦

看到之後覺得

要麼是回溯法,要麼是深度優先搜尋+剪枝

寫的回溯法,但是好像沒太搞出來

一個是怎麼記錄這種二維座標,傻了,一開始還記錄的是int[][]的陣列,其實直接記錄ij兩個引數就行

二是怎麼查重,一開始想著用hashset,但是二維的感覺不太好弄,其實可以把已經訪問過的地方置空格,訪問完後再置回正常值

總體程式碼如下:

class Solution {
    public boolean exist(char[][] board, String word) {
        char[] wordChar=word.toCharArray();
        for(int i=0;i<board.length;i++)
        {
            
for(int j=0;j<board[0].length;j++) { if(dfs(board,wordChar,i,j,0)) {return true;} } } return false; } public boolean dfs(char[][] board,char[] word,int i,int j,int index) { if(index==word.length) {return
true;}//到底了 if(i<0||j<0||i>board.length-1||j>board[0].length-1||board[i][j]!=word[index]) {return false;}//超過界限或者不相等 char flag=board[i][j]; board[i][j]=' '; if(dfs(board,word,i+1,j,index+1)||dfs(board,word,i,j+1,index+1)||dfs(board,word,i-1,j,index+1)||dfs(board,word,i,j-1,index+1)) {
return true;} board[i][j]=flag; return false; } }

感覺這種深度優先搜尋+剪枝的題目還挺多的,有必要練一練

然後這種和回溯法的區別在於什麼呢