首頁  >  文章  >  web前端  >  js實作杯子倒水問題自動解程式_javascript技巧

js實作杯子倒水問題自動解程式_javascript技巧

WBOY
WBOY原創
2016-05-16 17:39:331857瀏覽

智力測驗題常遇到類似的邏輯題,給幾個容量不等的杯子,讓你倒出多少的水。

安卓上有一款專門玩這個題的遊戲叫做Water Logic.


我安裝這個遊戲把幾十個關卡通了一遍,感覺這個遊戲的關卡設計很不好,關卡的難度並不是遞增的,有很多後面的關卡相當的弱智,並且缺乏高難度的關卡。

做為程式設計師的我們,玩這類題目應該都沒問題,10步以內的都可以輕鬆搞定,10步以上的也可以搞定但未必能夠輕鬆達到最少步數。

有3顆星強迫症的玩家兼程式設計師,寫出這麼個自動求解的小程序,以後這個問題再也不是問題了。


點這裡試試杯子倒水問題自動解

演算法基本邏輯

每個杯子有倒滿、倒空、倒入其它杯子的操作,所以總共是: 杯子數*(杯子數-1 2)

對於3隻杯子的情況,每一步可選的操作有12種.  如果2個杯子則每步可選操作有6種。

遍歷每一種操作,記錄作業完成後各個杯子內的水量,以水量計算出一個key來建立map.

遍歷各種倒水操作的過程中,如果key已經存在且當前步數大於先前記錄的步數則捨棄該操作。

這個小程式只能解決2個杯子或3個杯子的倒水問題,並沒有寫成N個杯子通用的,代碼有很多hard code。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn