媒体网站推进信息化建设无锡网站建设公司排名
2025/12/27 3:58:20 网站建设 项目流程
媒体网站推进信息化建设,无锡网站建设公司排名,哪个网站做职客比较好 比较正规,wordpress 后台制作版本一的写法是 #xff1a;下一个节点是否能合法已经判断完了#xff0c;传进dfs函数的就是合法节点。版本二的写法是#xff1a;不管节点是否合法#xff0c;上来就dfs#xff0c;然后在终止条件的地方进行判断#xff0c;不合法再return。我在之前回溯算法做过笔记下一个节点是否能合法已经判断完了传进dfs函数的就是合法节点。版本二的写法是不管节点是否合法上来就dfs然后在终止条件的地方进行判断不合法再return。我在之前回溯算法做过笔记我更偏好版本一。xy老让我联想到坐标我就不用xy了。也可以叫row、col。package main import ( bufio fmt os ) var dir [4][2]int{{0, 1}, {1, 0}, {-1, 0}, {0, -1}} func main() { in : bufio.NewReader(os.Stdin) var n, m int fmt.Fscan(in, n, m) grid : make([][]int, n) visited : make([][]bool, n) for i : range grid { grid[i] make([]int, m) } for i : range visited { visited[i] make([]bool, m) } for i : range grid { for j : range grid[i] { fmt.Fscan(in, grid[i][j]) } } res : 0 for i : range grid { for j : range grid[i] { if grid[i][j] 1 !visited[i][j] { res visited[i][j] true dfs(grid, visited, i, j) } } } fmt.Println(res) } func dfs(grid [][]int, visited [][]bool, i, j int) { for k : 0; k 4; k { nextI : i dir[k][0] nextJ : j dir[k][1] if nextI 0 || nextI len(grid) || nextJ 0 || nextJ len(grid[0]) { continue } if grid[nextI][nextJ] 1 !visited[nextI][nextJ] { visited[nextI][nextJ] true dfs(grid, visited, nextI, nextJ) } } }如果节点出队列再标记为已访问过会导致相同的节点重复入队列进而导致队列中会有大量的重复节点。package main import ( bufio fmt os ) var dir [4][2]int{{0, 1}, {1, 0}, {-1, 0}, {0, -1}} func main() { in : bufio.NewReader(os.Stdin) var n, m int fmt.Fscan(in, n, m) grid : make([][]int, n) visited : make([][]bool, n) for i : range grid { grid[i] make([]int, m) } for i : range visited { visited[i] make([]bool, m) } for i : range grid { for j : range grid[i] { fmt.Fscan(in, grid[i][j]) } } res : 0 for i : range grid { for j : range grid[i] { if grid[i][j] 1 !visited[i][j] { res visited[i][j] true bfs(grid, visited, i, j) } } } fmt.Println(res) } type Pair struct { i, j int } func bfs(grid [][]int, visited [][]bool, row, col int) { q : make([]Pair, 0) q append(q, Pair{row, col}) visited[row][col] true for len(q) ! 0 { cur : q[0] q q[1:] for k : 0; k 4; k { nextI : cur.i dir[k][0] nextJ : cur.j dir[k][1] if nextI 0 || nextI len(grid) || nextJ 0 || nextJ len(grid[0]) { continue } if grid[nextI][nextJ] 1 !visited[nextI][nextJ] { q append(q, Pair{nextI, nextJ}) visited[nextI][nextJ] true } } } }easypackage main import ( bufio fmt os ) var dir [4][2]int{{0, 1}, {1, 0}, {-1, 0}, {0, -1}} var count int func main() { in : bufio.NewReader(os.Stdin) var n, m int fmt.Fscan(in, n, m) grid : make([][]int, n) visited : make([][]bool, n) for i : range grid { grid[i] make([]int, m) } for i : range visited { visited[i] make([]bool, m) } for i : range grid { for j : range grid[i] { fmt.Fscan(in, grid[i][j]) } } res : 0 for i : range grid { for j : range grid[i] { if grid[i][j] 1 !visited[i][j] { visited[i][j] true count 1 dfs(grid, visited, i, j) if count res { res count } } } } fmt.Println(res) } func dfs(grid [][]int, visited [][]bool, i, j int) { for k : 0; k 4; k { nextI : i dir[k][0] nextJ : j dir[k][1] if nextI 0 || nextI len(grid) || nextJ 0 || nextJ len(grid[0]) { continue } if grid[nextI][nextJ] 1 !visited[nextI][nextJ] { visited[nextI][nextJ] true count dfs(grid, visited, nextI, nextJ) } } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询