連連看遊戲中的最短路徑

2021-09-08 16:54:08 字數 1060 閱讀 8526

連連看遊戲是乙個比較簡單的遊戲,兩個相同的點可以消除,但前提是兩點之間的路徑不能有多於兩個折點。如何去求解兩個點之間的距離呢?我們可以將這裡的距離定義為二元組(x,y),x表示多少次轉折,y表示路徑長度。x值越小距離越短,相同x值的情況下y值越小距離越短。只要使用bfs就可以了,下面就容易寫**了。

#include #include using namespace std;

const int n = 20;

int inline getx(int x)

int inline gety(int x)

int inline make(int x, int y)

bool inline isvalid(int x, int y)

char int2char(int i)

void print(int map[n][n])

cout << endl;

}}int main()

}map[0][2] = -1;

map[1][2] = -1;

map[2][3] = -1;

map[2][4] = -1;

map[3][4] = -1;

print(map);

cout << "---\r\n\r\n" << endl;

queueq;

***[0][0] = 1;

q.push(make(0, 0));

while (!q.empty()) else

}if (d && isvalid(x,y+step) && ***[x][y+step] == 0) else

}if (l && isvalid(x-step,y) && ***[x-step][y] == 0) else

}if (r && isvalid(x+step,y) && ***[x+step][y] == 0) else }}

q.pop();

}print(map);

cout << "finish..." << endl;

return 0;

}

BFS 連連看遊戲

時間限制 2 sec 記憶體限制 10 mb 提交 207 解決 27 提交 狀態 討論版 大家都玩過連連看吧!今天我們玩乙個類似的遊戲。在乙個由10 10個小方格組成的矩形裡有n n 10 對字元 它們是大寫字元中的前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...

連連看路徑求解的演算法

這是路徑求解的演算法做乙個簡單的介紹,適合入門者 首先是 x to x 這個是橫向比較直連 然後是 y to y 這個是豎向比較直連 然後是 1個折點 演算法很簡單 比如 7x3的 0001000 0000000 0000001 p1 是 3,0 p2 是 6,2 那麼折點是 000100x 000...