关注
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)
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 春招 / 实习投递,你最焦虑的一件事 #
3665次浏览 53人参与
# HR问:你期望的薪资是多少?如何回答 #
80005次浏览 677人参与
# 神州信息求职进展汇总 #
4637次浏览 74人参与
# 今年找实习到底有多难? #
2287次浏览 31人参与
# 27届求职交流 #
19601次浏览 398人参与
# 哪一刻你对工作祛魅了? #
1345次浏览 21人参与
# 26届求职交流 #
9846次浏览 252人参与
# 工作丧失热情的瞬间 #
366674次浏览 2557人参与
# 快手求职进展汇总 #
737563次浏览 7115人参与
# 双非能在秋招上岸吗? #
378174次浏览 1875人参与
# 国企/银行/研究所公司爆料 #
195115次浏览 900人参与
# 三月的小目标 #
30104次浏览 567人参与
# 听劝,这个公司值得去吗 #
678683次浏览 2000人参与
# 交出你的校招焚诀 #
21523次浏览 327人参与
# 面试___岗的必刷题单 #
23994次浏览 429人参与
# 哪些公司开暑期实习了? #
39356次浏览 315人参与
# 面试中,你被问过哪些奇葩问题? #
89067次浏览 850人参与
# 你觉得mentor喜欢什么样的实习生 #
51773次浏览 1009人参与
# 求职遇到的搞笑事件 #
165264次浏览 902人参与
# 24秋招避雷总结 #
953817次浏览 7052人参与
# 汇川技术求职进展汇总 #
183502次浏览 1060人参与