找到它

标题:找到它 | 时间限制: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
}


全部评论

相关推荐

牛客593440405号:换张照片,hr看了怕你死在工位上
点赞 评论 收藏
分享
神哥不得了:神哥来啦~1.建议不要包装,很容易问穿2.没日常也能找到暑期3.简历模板换一下,字体和版式看着好难受,而且最好压缩到一页,技术的倒数第2和3重复啦,项目建议换两个高质量的上去,如果时间够的话,八股就把高频top50的题目多巩固几遍,吃透,注意不要找假高频,这样绝对能找到暑期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务