題目源自 程式設計實習 12章 遞迴問題。
//思路根本方式是遞迴,走迷宮類問題,處在每一步上都要列舉下一步的方向,用move陣列來儲存行進方向。
另外用mark陣列來儲存是否訪問過
開始用puzzle陣列來表示板子分布,然後在外面多加一圈來輔助計算。遞迴函式關鍵在於每一次呼叫時,先判斷
當前步數是否大於最小步數,否則return,這樣可以簡化很多計算,同時,有乙個遞迴出口,判斷是否為結果,並
更新最小步數。
否則朝四個方向走,用列舉列出來,然後判斷下一步是否符合條件。
條件1 nextx,nexty都處在board內部。
條件2 下一步沒有訪問過,並且是空格(可以連通)。
條件3 下一步是目的地。
此外這個題目是問的折現的個數,不是步數,所以還要有個方向變數來儲存是否變向了,在**中用if(direction == i)
來判斷,如果相等,step就不用增加。
最後還要將mark標記為未訪問
問題描述
• 當下面的情況滿足時,
認為兩個遊戲卡片之間有一條路徑相連:
• 路徑只包含水平或者豎直的直線段
• 路徑不能穿過別的遊戲卡片
• 但是允許路徑臨時的離開矩形板
(1,3) (2,3) (5,3)
(3,4) (4,4) 輸入 (1/2)
• 輸入包括多組資料: 乙個矩形板對應一組資料
• 第一行包括兩個整數 w和h (1 <= w, h <= 75),
分別表示矩形板的寬度和長度
• 下面的h行, 每行包括w個字元, 表示矩形板上的遊戲卡
片分布情況:
• 使用 『x』 表示這個地方有乙個遊戲卡片
• 使用 空格 表示這個地方沒有遊戲卡片
5 輸入 (2/2)
• 之後每行上包括4個整數:
x1, y1, x2, y2 (1 <= x1, x2 <= w, 1 <= y1, y2 <= h)
• 給出兩個卡片在矩形板上的位置
注意: 矩形板左上角的座標是(1,1)
輸入保證這兩個遊戲卡片所處的位置是不相同的
如果一行上有4個0, 表示這組測試資料的結束
• 如果一行上給出w = h = 0, 那麼表示所有的輸入結束了
6 輸出
• 對每乙個矩形板, 輸出一行 「board #n:」, n是輸入資料的
編號 • 對每一組需要測試的遊戲卡片輸出一行. 這一行的開頭
是 「pair m: 」, 這裡m是測試卡片的編號(對每個矩形板,
編號都從1開始)
• 如果可以相連, 找到連線這兩個卡片的所有路徑中包括
線段數最少的路徑, 輸出 「k segments.」
k是找到的最優路徑中包括的線段的數目
• 如果不能相連, 輸出 「impossible.」
• 每組資料之後輸出乙個空行 7 樣例輸入
5 4
x x x x x
x x
x x x x
x x x
2 3 5 3
1 3 4 4
2 3 3 4
0 0 0 0
0 0
#include
using namespace std;
const int maxn = 75;
char puzzle[maxn+2][maxn+2];
int mark[maxn+2][maxn+2];
int move[4][2]=,,,};
int w,h,minstep;
void search(int nowx,int nowy,int endx,int endy,int step,int direction);
int main()
for(i = 1;i <= w;i++)
for(i = 0;i <= w;i++)
puzzle[i+1][h+1] = ' ';
for(j = 0;j <=h;j++)
puzzle[w+1][j+1]=' ';
int beginx,beginy,endx,endy,countnum(0);
while(cin>>beginx>>beginy>>endx>>endy&&(beginx != 0))
cout<}
return 0;
}void search(int nowx,int nowy,int endx,int endy,int step,int direction)}}
連連看小遊戲前端實現
先看一下遊戲的介面 一點選開始,遊戲就開始計時,頂部的折扣會飛速上公升,如果玩家玩的速度太慢的話那麼只能拿到乙個他都不想要的折扣了,呵呵 開始 span div div var gridw document.width 7 每乙個格仔的寬度,根據螢幕的寬度來定,做到自適應 var gridh doc...
連連看小遊戲專案梳理
如何保證每個元素都能找到配對的元素並且遊戲可以開始進行?直接相連的元素,需要拐乙個彎的元素,需要拐兩個彎的元素 如果有拐角的話,拐角的線是怎麼畫出來的 路徑是怎麼找到的?直接相連的元素 屬於同一行和同一列上的 需要拐乙個彎的 在乙個矩形的對邊的位置上,找到矩形的另外一組對角線,判斷before el...
BFS 連連看遊戲
時間限制 2 sec 記憶體限制 10 mb 提交 207 解決 27 提交 狀態 討論版 大家都玩過連連看吧!今天我們玩乙個類似的遊戲。在乙個由10 10個小方格組成的矩形裡有n n 10 對字元 它們是大寫字元中的前n個 矩形裡有些位置是可以從上面走過,有些則不能。能走過的位置用 標識,不能的用...