[python]伯準1149:RGB距離



https://www.acmicpc.net/problem/1149

に答える


問題を見ると、この問題のアリ戦士の問題を思い出した.アリ戦士は1次元で、これは2次元とは少し違います.
現在のホームでR(0)を選択した場合、次のホームでG(1)、B(2)を選択することができる.
現在の家庭でG(1)が選択されている場合、次の家庭ではR(0)、B(2)を選択することができる.
現在の家でB(2)を選択した場合、次の家ではR(0)、G(1)を選択することができる.
現在の自宅で選択した色の費用と、以下の場所で可能な費用の最小費用の合計を累計して保存します.

コード#コード#

import sys
input = sys.stdin.readline
n = int(input())
cost = [list(map(int, input().split())) for _ in range(n)]

for house in range(1, n):
    for color in range(3):
        cost[house][color] = cost[house][color] + min(cost[house-1][(color+1)%3], cost[house-1][(color+2)%3])
print(min(cost[-1]))