結果

問題 No.157 2つの空洞
ユーザー fine
提出日時 2016-03-04 20:16:35
言語 Ruby
(3.4.1)
結果
WA  
実行時間 -
コード長 808 bytes
コンパイル時間 104 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 12,416 KB
最終ジャッジ日時 2024-09-24 14:10:47
合計ジャッジ時間 2,618 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3 WA * 1
other AC * 6 WA * 10
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

@w,@h = gets.split.map(&:to_i)
@data = STDIN.map(&:chomp).join('').split('')

def sol now,d,f,memo
    tmp = 0
    if @data[now] == '.'
        if f == 1
            return 0
        end
    else
        tmp = f = 1
    end
    ans = 10000
    memo[now] = true
    if d != 'S' && now < @w && !memo[now - @w] 
        ans = [ans,sol(now - @w,'N',f,memo) + tmp].min
    end
    if d != 'N' && now / @w != @h - 1 && !memo[now + @w]
        ans = [ans,sol(now + @w,'S',f,memo) + tmp].min
    end
    if d != 'E' && now % @w != 0 && !memo[now - 1]
        ans = [ans,sol(now - 1,'W',f,memo) + tmp].min
    end
    if d != 'W' && now % @w != @w - 1 && !memo[now + 1]
        ans = [ans,sol(now + 1,'E',f,memo) + tmp].min
    end
    return ans
end

memo = Array.new(@w * @h,false)
p sol(@data.index('.'),'',0,memo)
0