找到它
标题:找到它 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限
找到它是个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词HELLOWORLD,在矩阵中只要能找到H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。
注意区分英文字母大小写,并且你只能上下左右行走,不能走回头路。
package main import ( "bufio" "os" "fmt" ) func main() { var arr []string scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { arr = append(arr, scanner.Text()) } var key = []byte(arr[1]) var mapArr = make([][]byte,0) arr = arr[2:] for k:=range arr{ mapArr = append(mapArr, []byte(arr[k])) } for k :=range mapArr{ for j :=range mapArr[k]{ if fdp(k,j,0,key,mapArr){ fmt.Printf("%v %v",k+1,j+1) goto END } } } fmt.Printf("NO") END: } func fdp(x, y int, index int, key []byte, grids [][]byte) bool { if string(grids[x][y]) == string(key[index]) { grids[x][y] = 2 } else { return false } if len(key) == index+1 { return true } var isOK bool if x+1 < len(grids[0]) && !isOK { isOK = fdp(x+1, y, index+1, key, grids) } if y+1 < len(grids) && !isOK { isOK = fdp(x, y+1, index+1, key, grids) } if x-1 >= 0 && !isOK { isOK = fdp(x-1, y, index+1, key, grids) } if y-1 >= 0 && !isOK { isOK = fdp(x, y-1, index+1, key, grids) } if isOK { return isOK } return false }