关注
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)
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享


点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场捅娄子大赛 #
308229次浏览 3132人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
106571次浏览 776人参与
# 华泰证券Fintech星战营 #
166514次浏览 190人参与
# 写给毕业5年后的自己 #
1836次浏览 40人参与
# 好好告别我的学生时代 #
27271次浏览 577人参与
# 华为求职进展汇总 #
4634110次浏览 28214人参与
# 晒一下我的毕业照 #
26271次浏览 266人参与
# 如果今天是你的last day,你会怎么度过? #
20821次浏览 193人参与
# 如何缓解求职过程中的焦虑? #
4749次浏览 78人参与
# 简历无回复,你会继续海投还是优化再投? #
69258次浏览 697人参与
# 互联网行业现在还值得去吗 #
17651次浏览 55人参与
# 记录实习开销 #
17682次浏览 123人参与
# 00后45度躺现状 #
94357次浏览 490人参与
# 运营来爆料 #
43460次浏览 323人参与
# 海信求职进展汇总 #
63246次浏览 349人参与
# 嵌入式岗知多少 #
40183次浏览 429人参与
# 节后第一天上班,我的精神状态 #
10076次浏览 82人参与
# 机械人,签完三方你在忙什么? #
49219次浏览 212人参与
# 如何KTV领导 #
56269次浏览 416人参与
# 租房前辈的忠告 #
170272次浏览 6410人参与
# 2025,我想...... #
50008次浏览 471人参与