关注
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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
06-04 19:53
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 🌟择难路,未有疑,四非学院本运气拉满,春招拿下大厂后端3.1W
- 2... 腾讯csig暑期一二三面7205
- 3... 史上最细SQL实战系列:sql笔试例题总结篇(建议收藏)6859
- 4... 腾讯云智后台开发暑期面经4420
- 5... 其实主包早就找到工作了,但还是每天都刷3502
- 6... 作为实习生,我问薪无愧3086
- 7... 字节拒绝、百度毁约,7.1 腾讯 Offer 到手:25 届双非碎碎念(25届最晚Offer)2993
- 8... 字节实习week6:听leader吐槽当前的应届生候选人们2798
- 9... 没实习 == 秋招凉?2728
- 10... 离开软件测试才发现外面没有雨2683
正在热议
更多
# 应届生,你找到工作了吗 #
1099次浏览 15人参与
# 双非应该如何逆袭? #
171415次浏览 2839人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
37239次浏览 271人参与
# 简历当中有水分算不算造假? #
1486次浏览 20人参与
# 春招进度记录 #
339274次浏览 3123人参与
# 实习生的蛐蛐区 #
863次浏览 19人参与
# 三一集团提前批进度交流 #
21864次浏览 138人参与
# 谈薪时HR压价该怎么应对 #
205350次浏览 3174人参与
# 毕业旅行去哪玩儿 #
7428次浏览 121人参与
# 非技术岗投递进展 #
144086次浏览 1264人参与
# 百度工作体验 #
228668次浏览 2002人参与
# 材料进Fab厂真的劝退吗? #
42880次浏览 184人参与
# 机械人与华为的爱恨情仇 #
118288次浏览 951人参与
# 没有合适的工作,你会先找个干着,还是考公考研 #
115730次浏览 1133人参与
# 百度秋招提前批进度 #
104755次浏览 1119人参与
# 双非有机会进大厂吗 #
431977次浏览 4285人参与
# 上班到公司第一件事做什么? #
59752次浏览 513人参与
# 秋招盘点:机械人值得去的企业 #
71623次浏览 670人参与
# 平台or薪资 硬件uu更看重哪个 #
128353次浏览 595人参与
# 工作中,努力重要还是选择重要? #
139180次浏览 1697人参与
# 发工资后,你做的第一件事是什么 #
69080次浏览 232人参与