劍指offer 012(字串在矩陣中的路徑)

2021-08-14 23:46:55 字數 1388 閱讀 5784

《劍指offer》目錄索引

問題描述:

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如在下面的3×4的矩陣中包含一條字串「bfce」的路徑(路徑中的字母用下劃線標出)。但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入這個格仔。

a b t g

c f c s

j d e h

思路:

1)找路徑,需要遍歷矩陣,可採用回溯遞迴的方法遍歷矩陣,當是合法的座標時,可遍歷上下左右四個座標

2)二維陣列實現時,標記走過的路徑,當走過合法路徑後,進行標記,避免重複

3)一維陣列實現時,注意下標的控制,同時記錄走過的路徑時,需將其儲存到另一矩陣當中,注意是相同位置

**:

1)二維陣列實現

sdatatype arr[row][col] = ,,,

};//列印矩陣

void printarr()

printf("\n");

}printf("\n\n");

}//遞迴法

int haspath(sdatatype arr[row][col], sdatatype* str, int row, int col)}}

return haspath;

}//判斷是否為路徑

int stringispath(sdatatype (*arr)[col], sdatatype* str)}}

return0;}

void test()

void test1()

void test2()

2)一維陣列實現

int path(char* arr, char* str, int row, int col, int startrow, int startcol,int len,char* path)}}

return haspath;

}int stringispath(char* arr, char* str, int row, int col,int startrow,int startcol)}}

return0;}

void test3()

void test4()

void test5()

劍指offer 二 字串 cpp

1.替換空格void replacespace char str,int length originallen int newlen originallen numofblank 2 if newlen length return while originallen 0 originallen ne...

劍指offer 字串

問題描述 class solution auto res temp.c str strcpy str,res strcpy 關於c 中string和char 的區別參考 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0...

劍指offer 字串

問題描述 function replacespace str 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含 0 次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a...