天气逐渐转凉,夏天就这么过去了,心里的一丝悸动也被这三天的雷雨浇灭了。下周即将出门旅行,但愿这短暂的海滨之行,能让站在人生交叉入口处的我重归平静。昨天在AC过一道小学数学即可解答的题后,今天又继续向前盲目的追寻,遇到一题《Cross》,说起来也真是应景(对应交叉),于是我不慌不忙,慢慢模拟,竭尽一切降低时间复杂度,最终AC了它。尽管AC的快感不是那么的强劲,但也足以抵消内心的一点失落惆怅了。
Atcoder ABC Contest 300 C.Cross
我的解
h,w = gets.split(" ").map(&:to_i)
num = []
for i in 0...h
num.push(gets.chomp.chars)
end
ans = Array.new([h,w].min,0)
for i in 1...h-1
for j in 1...w-1
if num[i][j] == "#"
x = [i - 0,h - 1 - i].min
y = [j - 0,w - 1 - j].min
z = [x,y].min
cnt = 0
1.upto(z) do |l|
if [num[i+l][j+l],num[i-l][j+l],num[i-l][j-l],num[i+l][j-l]].all? {|o| o == "#"}
cnt += 1
else
break
end
end
if cnt > 0
ans[cnt-1] += 1
end
end
end
end
puts ans.join(" ")