BFS 連連看遊戲

2021-08-04 01:41:28 字數 1841 閱讀 3821

時間限制: 2 sec  

記憶體限制: 10 mb

提交: 207  

解決: 27 [

提交][

狀態][

討論版]

大家都玩過連連看吧!今天我們玩乙個類似的遊戲。在乙個由10*10個小方格組成的矩形裡有n(n<=10)對字元(它們是大寫字元中的前n個)。矩形裡有些位置是可以從上面走過,有些則不能。能走過的位置用'.'標識,不能的用'#'標識。如果2個相同字元是連通的(從乙個字元能走到另乙個字元,注意走的時候只能向上、下、左、右走。某個位置是有其他字元時,這個位置是不能走的),那麼這對字元能夠進行配對。如果將這對字元配對,這對字元將從這個矩形裡消除,也就是說這2個字元所在的位置對於其他字元而言變成能走動了。

現在的問題是:請你決定這些字元的配對順序(只有能配對才能進行配對),使得n對字元最後都配對成功。

先給出乙個正整數t(t<=10),表示有t組測試資料。

每組測試資料有10行組成,每行有10個字元。這些字元只能是'.','#',或者是大寫字元中的前n個。每組測試資料中不超過10對字元。

如果能夠使每組測試資料中的n對字元配對成功,輸出配對的順序。如果有多種配對成功的順序,輸出字典序最小的那組。

否則輸出"my god!"。

2

abf.......

ce........

d.........

..........

..........

..........

..........

.........d

........ec

.......fba

abf.......

ce........

d.........

..........

..........

.........#

........#d

.........#

........ec

.......fba

dcabef

my god!

存粹消化老師給的例碼,看懂之後,自己打了一遍,測試的時候發現好多問題,慢慢的dubug,發現對這程式的理解加深了很多。但同時發現自己能力還是非常弱,思路已經給出來了,自己去實現,竟然還錯了很多次。還得加強訓練。

下面的**,給了注釋,講的有點亂

#include #include #include using namespace std;

struct q ;

q queu[10000];

int n;

char map[16][16];

int visti[16][16];

int dir[4][2]= ,,,}; //方向陣列

int bfs(int x,int y) }}

f++;

}if(!flag)

return 1;

else

return 0;

}int main() }}

if(!endl2)

}for(i=0; i<10&&endl2; i++)

for(j=0; j<10&&endl2; j++) //一發現有沒有消掉的字母,立刻跳出。

if(map[i][j]!='.' && map[i][j]!='#')

endl2=false;

if(!endl2)

printf("my god!");

else

for(i=1; i<=counts; i++)

printf("%c",ans[i]+65);

printf("\n");

}}

連連看遊戲。。c 編寫。。

直接附上 算了。連連看 2012 11 18 include include include include include include using namespace std struct data bool already 1010 1010 bool judge void push boo...

python連連看 Python 連連看連線演算法

功能 為連連看遊戲提供連線演算法 說明 模組中包含乙個point類,該類是遊戲的基本單元 點 該類包含屬性 x,y,value。其中x,y代表了該點的座標,value代表該點的特徵 0代表沒有被填充,1 8代表被填充為遊戲圖案,9代表被填充為牆壁 模組中還包含乙個名為points的point列表,其...

python連連看 Python 連連看連線演算法

coding utf 8 連連看連線演算法 為連連看遊戲提供連線演算法 模組中包含乙個point類,該類是遊戲的基本單元 點 該類包含屬性 x,y,value。其中x,y代表了該點的座標,value代表該點的特徵 0代表沒有被填充,1 8代表被填充為遊戲圖案,9代表被填充為牆壁 模組中還包含乙個名為...