关注
iOS Swift
import Foundation
/**
m行, n列
10,10
0,0,0,0,0,0,0,0,0,0
0,0,0,1,1,0,1,0,0,0
0,1,0,0,0,0,0,1,0,1
1,0,0,0,0,0,0,0,1,1
0,0,0,1,1,1,0,0,0,1
0,0,0,0,0,0,1,0,1,1
0,1,1,0,0,0,0,0,0,0
0,0,0,1,0,1,0,0,0,0
0,0,1,0,0,1,0,0,0,0
0,1,0,0,0,0,0,0,0,0
6,8
*/
class Node {
let value: Int
var check: Bool = false
init(_ value: Int) {
self.value = value
}
}
let first = readLine()!.split(separator: ",")
let (m, n) = (Int(first[0])!, Int(first[1])!)
var teamCount = 0
var count = 0
var maxCount = 0
var dict: [String: Node] = [:];
for row in 0..<m {
let line = readLine()!.split(separator: ",").map{ Int($0) }.compactMap { $0 }
for column in 0..<n {
let location = "\(row)\(column)"
dict[location] = Node(line[column])
}
}
func traverse(node: Node, row: Int, column: Int) {
count += 1
node.check = true
if column != 0, row != 0, let topleft = dict["\(row - 1)\(column - 1)"], topleft.value == 1, !topleft.check {
traverse(node: topleft, row: row - 1, column: column - 1)
}
if row != 0, let top = dict["\(row - 1)\(column)"], top.value == 1, !top.check {
traverse(node: top, row: row - 1, column: column)
}
if row != 0, column != n - 1, let topright = dict["\(row - 1)\(column + 1)"], topright.value == 1, !topright.check {
traverse(node: topright, row: row - 1, column: column + 1)
}
if column != 0, let left = dict["\(row)\(column - 1)"], left.value == 1, !left.check {
traverse(node: left, row: row, column: column - 1)
}
if column != n - 1, let right = dict["\(row)\(column + 1)"], right.value == 1, !right.check {
traverse(node: right, row: row, column: column + 1)
}
if row != m - 1, column != 0, let buttomleft = dict["\(row + 1)\(column - 1)"], buttomleft.value == 1, !buttomleft.check {
traverse(node: buttomleft, row: row + 1, column: column - 1)
}
if row != m - 1, let buttom = dict["\(row + 1)\(column)"], buttom.value == 1, !buttom.check {
traverse(node: buttom, row: row + 1, column: column)
}
if row != m - 1, column != 0, let buttomright = dict["\(row + 1)\(column + 1)"], buttomright.value == 1, !buttomright.check {
traverse(node: buttomright, row: row + 1, column: column + 1)
}
}
for row in 0..<m {
for column in 0..<n {
let location = "\(row)\(column)"
guard let node = dict[location], node.value == 1, !node.check else { continue }
teamCount += 1
maxCount = count > maxCount ? count : maxCount
count = 0
traverse(node: node, row: row, column: column)
}
}
maxCount = count > maxCount ? count : maxCount
print(teamCount, maxCount)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
04-18 15:09
广东白云学院 计算机类 点赞 评论 收藏
转发
点赞 评论 收藏
转发
牛客热帖
正在热议
# 和牛牛一起刷题打卡 #
4803次浏览 447人参与
# 机械制造薪资爆料 #
341423次浏览 4057人参与
# 牛客帮帮团来啦!有问必答 #
987504次浏览 15293人参与
# 通信硬件薪资爆料 #
242432次浏览 2283人参与
# 腾讯工作体验 #
146721次浏览 1408人参与
# 如何写一份好简历 #
301340次浏览 4331人参与
# 实习必须要去大厂吗? #
18289次浏览 265人参与
# 你的简历改到第几版了 #
323409次浏览 4860人参与
# 你觉得机械有必要实习吗 #
10256次浏览 140人参与
# 你收到了团子的OC了吗 #
515479次浏览 6138人参与
# 晒一晒我的offer #
3654064次浏览 56948人参与
# 2022毕业生求职现身说法 #
20609次浏览 310人参与
# 毕业租房也有小确幸 #
32307次浏览 1910人参与
# 产品人专业大盘点 #
15117次浏览 120人参与
# 为什么国企只招应届生 #
56202次浏览 411人参与
# 浅聊一下我实习的辛苦费 #
93535次浏览 916人参与
# 视觉/交互/设计岗位评价 #
3369次浏览 61人参与
# 产品人求职现状 #
54984次浏览 795人参与
# 为什么那么多公司毁约 #
55077次浏览 487人参与
# 找工作时遇到的神仙HR #
196653次浏览 1844人参与