劍指Offer 面試題12(矩陣中的路徑)

2021-09-26 18:36:25 字數 2595 閱讀 7767

這裡是引用

題目描述

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

// a b t g

// c f c s

// j d e h

示例**

#include

#include

#include

using

namespace std;

bool

haspathcore

(const

char

* matrix,

int rows,

int cols,

int row,

int col,

const

char

* str,

int& pathlength,

bool

* visited)

;bool

haspath

(const

char

* matrix,

int rows,

int cols,

const

char

* str)}}

delete

visited;

return

false;}

bool

haspathcore

(const

char

* matrix,

int rows,

int cols,

int row,

int col,

const

char

* str,

int& pathlength,

bool

* visited)

}return haspath;

}// ********************測試**********************

void

test

(const

char

* testname,

const

char

* matrix,

int rows,

int cols,

const

char

* str,

bool expected)

//abtg

//cfcs

//jdeh

//bfce

void

test1()

//abce

//sfcs

//adee

//see

void

test2()

//abtg

//cfcs

//jdeh

//abfb

void

test3()

//abcehjig

//sfcslopq

//adeemnoe

//adidejfm

//vceifggs

//slhecceidejfggfie

void

test4()

//abcehjig

//sfcslopq

//adeemnoe

//adidejfm

//vceifggs

//sggfiecvaasabcehjigqem

void

test5()

//abcehjig

//sfcslopq

//adeemnoe

//adidejfm

//vceifggs

//sggfiecvaasabceejigoem

void

test6()

//abcehjig

//sfcslopq

//adeemnoe

//adidejfm

//vceifggs

//sggfiecvaasabcehjigqems

void

test7()

//aaaa

//aaaa

//aaaa

//aaaaaaaaaaaa

void

test8()

//aaaa

//aaaa

//aaaa

//aaaaaaaaaaaaa

void

test9()

//a//a

void

test10()

//a//b

void

test11()

void

test12()

intmain

(int argc,

char

* ar**)

《劍指offer》面試題12 矩陣中的路徑

題目 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母用下劃線標出 ...

劍指offer面試題12 矩陣中的路徑

a b t g c f c s j d e h 可以用回溯法來做這道題,首先,在矩陣中任選乙個格仔作為路徑的起點。假設矩陣中某個格仔的字元為ch,並且這個格仔對應於路徑上的第i個字元。如果路徑上的第i個字元不是ch,那麼這個格仔不可能處在路徑上的第i個位置。如果路徑上的第i個字元正好是ch,那麼到相...

劍指offer 面試題12 矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 abce sfcs adee 矩陣中包含一條字串 bcced 的路...