題目連結

https://zerojudge.tw/ShowProblem?problemid=a465

https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3836

參考文章

X

本題要點

我先將田地轉為陣列 farm,以便後續更改紀錄

因為我用的方式是「只要當前是良田就在下一塊放稻草人

farm[cur+1] = "I"
result += 1

所以在 farm 的最後加一個 [0] 是為了確保迴圈可以跑到最後一塊地

並且在最後一塊是良田的情況下,將稻草人放在下一位不會超出迴圈(可以當成插在當前良田上)

如果當前是稻草人,就代表下一塊田地會受到保護,我們就將他改成虛無之地

好讓下一次判斷不會新增一個多餘的稻草人

有 line: 12 的判斷

'''
S = "..##.#."

.I##.#. cur = 0, result = 0
^
.I##.I. cur = 4, result = 1
    ^
.I##.I# cur = 5, result = 2
     ^
'''

沒有 line: 12 的判斷

'''
S = "..##.#."

.I##.#. cur = 0, result = 0
^
.I##.I. cur = 4, result = 1
    ^
.I##.I. cur = 5, result = 2
     ^
.I##.II cur = 6, result = 3
      ^
'''

解二比較好理解,省去了解一紀錄農田的陣列,直接改用 while 迴圈判斷