針對此題目小弟前後兩次(相差約10天)用了兩種不同的寫法(概念大概相同,但基本的原始模型不同,有興趣的人可以再討論),
但是兩次都在 line: 5 的時候發生錯誤,且小弟的算法結果均為 1,而測資給出的答案則是 31,
心情煩躁之下決定採用暴力解(小朋友不要學...),就是當我的答案為 1 的時候,強制輸出 31 來回饋給電腦,
結果 line: 5 是過了,但後續之後的 line: 6、line: 7、line: 8 也都陸續出錯......
為了找出到底問題出在哪?決定輸出 輸入的測資 ,來觀察到底錯誤出在哪?
比方說:line:5 的測資輸出 原本為 31,我不輸出結果,我輸出一開始輸入的 2 行 輸入測資
經過大量的 Wrong Answer 之後,我得到了以下的結果......
WA ( line: 5 )
initial: 1 1 1 1 1
goal: 1 1 1 1 2
My ans: 1
Real ans: 31
WA ( line: 6 )
initial: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
goal: 1 2 3 3 2 1 2 2 3 3 3 3 1 1 1
My ans: 8728
Real ans: 31583
WA ( line: 7 )
initial: 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2
goal: 2 2 3 3 1 1 2 1 3 2 3 3 3 1 1 1 2 3 3 2
My ans: 997526
Real ans: 450543
WA ( line: 8 )
initial: 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2
goal: 3 2 1 3 1 2 3 2 1 2 2 3 3 3 2 1 3 3 1 3 2 2 2 1 1 3 2 2 3 3
My ans: 687339443
Real ans: 814216693
如果也是一樣寫出了程式碼,可是跟小弟一樣卡在 line: 5 的人,經過這個輸入資料可以發現 ......
假設 initial 的資料,跟 goal 的資料,全部倒著輸入的話,程式跑出來的移動步數就是 正確的答案了......
所以搞半天,原來是測資錯誤嗎......
還是其實題目裡面有特別說明,可是小弟忽略了(沒看懂?)...原諒我英文有點差哈哈哈
不確定你的寫法如何,僅能解惑一下 line 5 測資
5 1 1 1 1 1 1 1 1 1 2
用題目圖解表示的話,會是
5 A A A A A A A A A B
要將第 5 盤從 A 柱移到 B 柱,不能直接移過去,必須先將上面 1~4 盤移走,故答案不為 1
移動步驟為
+15
+1
+15
得 31
步,希望有解答你的疑惑
不確定你的寫法如何,僅能解惑一下 line 5 測資
5 1 1 1 1 1 1 1 1 1 2用題目圖解表示的話,會是
5 A A A A A A A A A B要將第 5 盤從 A 柱移到 B 柱,不能直接移過去,必須先將上面 1~4 盤移走,故答案不為 1
移動步驟為
- 第 1~4 盤從 A 柱移到 C 柱:
+15
- 第 5 盤從 A 柱移到 B 柱:
+1
- 第 1~4 盤從 C 柱移到 A 柱:
+15
得
31
步,希望有解答你的疑惑
所以 題意的意思就是 照著上面的輸入輸出來看, 最右邊表示最底層的碟子,然後最左邊表示最上層的碟子囉!!!???
我是一直照著最右邊是最上層的碟子,跟 最左邊是最下層的碟子 的方式在作的......
然後又剛好範例測資全部通過,又剛好題目測資前 4 題也都完全對稱,所以計算出來也是正確......
說到最後,其實就是英文太差然後題意理解錯誤哈哈哈
我的作法移動步驟 跟大大的方式差不多,只是我搞錯了輸入的盤子方向而已......