資源簡介
碼頭倉庫是劃分為n×m個格子的矩形陣列。有公共邊的格子是相鄰格子。當前倉庫中有的格子是空閑的(沒有存放任何貨物);有的格子上則已經堆放了沉重的貨物。堆放的貨物太重了,單憑倉庫管理員的力量是無法移動的。現在倉庫管理員有一項任務,要將一個小箱子推到指定的格子上去。管理員可以在倉庫中移動,但不得跨過沉重的不可移動的貨物和箱子。當管理員站在與箱子相鄰的格子上時,可以做一次推動,把箱子推到另一個相鄰的格子
代碼片段和文件信息
/*
算法實現題6-20?推箱子問題?
??問題描述:?
碼頭倉庫是劃分為n×m個格子的矩形陣列。有公共邊的格子是相鄰格子。當前倉庫中
有的格子是空閑的;有的格子則已經堆放了沉重的貨物。由于堆放的貨物很重,單憑倉庫管
理員的力量是無法移動的。倉庫管理員有一項任務,要將一個小箱子推到指定的格子上去。
管理員可以在倉庫中移動,但不能跨過已經堆放了貨物的格子。管理員站在與箱子相對的空
閑格子上時,可以做一次推動,把箱子推到另一相鄰的空閑格子。推箱時只能向管理員的對
面方向推。由于要推動的箱子很重,倉庫管理員想盡量減少推箱子的次數。?
??編程任務:?
對于給定的倉庫布局,以及倉庫管理員在倉庫中的位置和箱子的開始位置和目標位置,
設計一個解推箱子問題的分支限界法,計算出倉庫管理員將箱子從開始位置推到目標位置所
需的最少推動次數。?
??數據輸入:?
由文件input.txt提供輸入數據。輸入文件第?1?行有?2個正整數?n和?m(1<=nm<=100),
表示倉庫是n×m個格子的矩形陣列。接下來有?n行,每行有?m個字符,表示格子的狀態。?
S?表示格子上放了不可移動的沉重貨物;?
w?表示格子空閑;?
M?表示倉庫管理員的初始位置;?
P?表示箱子的初始位置;?
K?表示箱子的目標位置。?
??結果輸出:?
將計算出的最少推動次數輸出到文件?output.txt。如果倉庫管理員無法將箱子從開始位
置推到目標位置則輸出“No?solution!”。?
輸入文件示例??輸出文件示例?
input.txt??output.txt?
10?12??7?
SSSSSSSSSSSS?
SwwwwwwwSSSS?
SwSSSSwwSSSS?
SwSSSSwwSKSS?
SwSSSSwwSwSS?
SwwwwwPw
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????147??2008-09-08?14:43??inpu4.txt
?????文件????????231??2008-09-08?15:28??input9.txt
?????文件????????147??2008-09-08?15:30??input.txt
?????文件?????????12??2008-09-10?15:03??output.txt
?????文件???????8752??2009-06-08?10:38??push.cpp
?????文件??????73366??2008-09-05?16:38??push.pdf
-----------?---------??----------?-----??----
????????????????82655????????????????????6
- 上一篇:西工大 自動化學院 導師 介紹
- 下一篇:RSA簽名驗證
評論
共有 條評論