連連看小遊戲,遞迴問題

2021-06-23 05:46:51 字數 2271 閱讀 7102

題目源自 程式設計實習 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個 矩形裡有些位置是可以從上面走過,有些則不能。能走過的位置用 標識,不能的用...