人生的交叉路口

天气逐渐转凉,夏天就这么过去了,心里的一丝悸动也被这三天的雷雨浇灭了。下周即将出门旅行,但愿这短暂的海滨之行,能让站在人生交叉入口处的我重归平静。昨天在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(" ")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容