关注
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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-14 11:04
北京邮电大学 Java 
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 秋招什么时候开投比较合适? #
23701次浏览 318人参与
# 百度工作体验 #
223389次浏览 1972人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
27961次浏览 216人参与
# 机械人与华为的爱恨情仇 #
117155次浏览 946人参与
# 发工资后,你做的第一件事是什么 #
68154次浏览 229人参与
# 机械人集合!你是什么工程师? #
15805次浏览 89人参与
# 你觉得实习能学到东西吗 #
36307次浏览 712人参与
# 找不到好工作选择GAP真的丢人吗 #
78275次浏览 938人参与
# 我想去国央企的原因 #
59993次浏览 393人参与
# 如何准备秋招 #
20667次浏览 390人参与
# 工作中哪个瞬间让你想离职 #
25909次浏览 177人参与
# 入职第四天,心情怎么样 #
29451次浏览 417人参与
# 拼多多工作体验 #
28540次浏览 197人参与
# 多益网络求职进展汇总 #
29231次浏览 134人参与
# 快手求职进展汇总 #
547105次浏览 6001人参与
# 硬件应届生薪资是否普遍偏低? #
74083次浏览 514人参与
# 不考虑转正,实习多久合适 #
32324次浏览 145人参与
# 面试中,你被问过哪些奇葩问题? #
68560次浏览 796人参与
# 你们公司几号发工资 #
21227次浏览 140人参与
# 如果再来一次,你还会学硬件吗 #
125786次浏览 1402人参与
# 实习,不懂就问 #
46386次浏览 693人参与