程式設計也快樂第3期SQL程式碼
設計思路:設x和y分別是6升和5升壺裡剩餘的水,用窮舉法,每一步各有6種操作可選,即:
5升去取水、6升去池取水、5升倒掉、6升倒水至5升、5升倒水至6升、6升倒掉,分別編號1-6
一邊試探,一邊記錄,找到符合條件的一個結果後,通過日誌的字首匹配,將它的歷史記錄取出
with o as(
select level l from dual connect by level<=6) --操作編號
,t(lv,m,x,y) as(select 1, cast('0' as varchar(30)) , 0, 0 from dual --m記錄倒水日誌
union all
select lv+1,m||l,
case l
when 1 then x --5升去池取水
when 2 then 6 --6升去池取水
when 3 then x --5升倒掉
when 4 then case when x-(5-y)>=0 then x-(5-y) else 0 end --6升倒水至5升
when 5 then case when y-(6-x)>=0 then 6 else x+y end --5升倒水至6升
when 6 then 0 --6升倒掉
end,
case l
when 1 then 5
when 2 then y
when 3 then 0
when 4 then case when x-(5-y)>=0 then 5 else x+y end
when 5 then case when y-(6-x)>=0 then y-(6-x) else 0 end
when 6 then y
end
from t,o where l<>substr(m,-1) and
(substr(m,-1),l) not in ((1,2),(2,1),(1,3),(2,6),(3,6),(6,3),(4,5),(5,4))
and x<>3 and y<>3 and lv<=10 and x between 0 and 6 and y between 0 and 5)
--操作條件:一個壺不做連續相同操作、還沒有完成、最多操作10次,不能出現負數
select * from t where substr((select m from t t1 where (x=3 or y=3) and rownum<=1),1,lv)=t.m order by lv;
--將符合條件的一個結果的歷史記錄取出
LV M X Y
1 0 0 0
2 01 0 5
3 015 5 0
4 0151 5 5
5 01515 6 4
6 015156 0 4
7 0151565 4 0
8 01515651 4 5
9 015156515 6 3
已選擇9行。
相關文章
- 程式設計也快樂: 兩隻水壺 C程式碼 搜尋版程式設計C程式
- 《快樂碼農》第5期 大話程式設計師面試程式設計師面試
- 《快樂碼農》第4期 程式設計師職場水深幾許?程式設計師
- 《Ruby基礎教程(第4版)》:快樂程式設計程式設計
- 程式設計也快樂第三期解答(四)程式設計
- 程式設計也快樂第三期解答(三)程式設計
- 程式設計也快樂第三期解答(二)程式設計
- 程式設計也快樂第三期解答(一)程式設計
- 《快樂碼農》第2期 程式設計師的愛情滄桑程式設計師
- 程式設計師節快樂程式設計師
- 程式設計師快樂器之JAVA程式碼生成工具程式設計師Java
- 使用Google Guava快樂程式設計GoGuava程式設計
- 程式設計師的快樂生活程式設計師
- 快樂指南:程式設計師版程式設計師
- 編碼也快樂:兩隻水壺F#程式
- 編碼也快樂:兩隻水壺Scheme程式Scheme
- 編碼也快樂:兩隻水壺C#程式C#
- 編碼也快樂:兩水壺的故事之JS程式JS
- 1024!程式設計師節快樂!程式設計師
- 女程式設計師們!節日快樂!程式設計師
- 程式設計師如何祝自己生日快樂程式設計師
- 程式設計學習之路:痛並快樂著程式設計
- 程式設計師的快樂:那些小細節程式設計師
- 讓程式設計快樂起來的過程程式設計
- 《快樂碼農》第7期 嘗試在帳篷中寫程式碼
- 華為大佬:做一個快樂的程式設計師程式設計師
- 調查:是什麼讓程式設計師快樂?程式設計師
- 快樂Node程式設計師的10個習慣程式設計師
- 在程式設計中體驗純粹的快樂程式設計
- 程式設計師入職三個月,竟一行程式碼都沒提交:我愛程式碼,程式碼使我快樂程式設計師行程
- 五線譜入門,程式設計師也可以玩音樂程式設計師
- 快樂的星期天:Scratch少兒趣味程式設計程式設計
- 程式設計師保持天天快樂的6個習慣程式設計師
- 程式設計師的燈下黑:沒學會快樂程式設計師
- SQL程式設計基礎(原書第3版)SQL程式設計
- 也談程式設計改革程式設計
- 編碼也快樂活動:撲克牌排序排序
- 編碼也快樂!撲克牌排序JAVA排序Java