亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

連連看實(shí)驗(yàn)核心:基于BFS的圖模型與消除判定算法解析

連連看實(shí)驗(yàn)核心:基于BFS的圖模型與消除判定算法解析 簡(jiǎn)介武漢理工大學(xué)數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)的歡樂(lè)連連看項(xiàng)目以游戲?yàn)檩d體系統(tǒng)訓(xùn)練非線(xiàn)性結(jié)構(gòu)的綜合運(yùn)用適合計(jì)算機(jī)專(zhuān)業(yè)學(xué)生、課程設(shè)計(jì)參考者及需要?jiǎng)邮掷斫鈽?shù)、圖、哈希表的開(kāi)發(fā)者。壓縮包共281個(gè)文件、約227MB核心由9個(gè)cpp源碼和13個(gè)h頭文件組成附帶Visual Studio解決方案配置、exe可執(zhí)行文件、編譯中間文件及bmp/ico圖像資源Git倉(cāng)庫(kù)對(duì)象也完整保留可作為版本管理學(xué)習(xí)素材。目前已有2570人瀏覽學(xué)習(xí)。項(xiàng)目完整實(shí)現(xiàn)連連看核心玩法包括鄰接矩陣/鄰接表建模、圖案匹配與消除判定、DFS/BFS搜索路徑等模塊便于對(duì)照源碼觀(guān)察非線(xiàn)性結(jié)構(gòu)在真實(shí)游戲邏輯中的運(yùn)行流程??芍苯舆\(yùn)行exe驗(yàn)證效果也能基于sln重新編譯調(diào)試對(duì)數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)和期末設(shè)計(jì)都有較高參考價(jià)值。1. 連連看實(shí)驗(yàn)到底在考什么非線(xiàn)性結(jié)構(gòu)不是難點(diǎn)建模才是某高校的數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)里連連看通常是“非線(xiàn)性結(jié)構(gòu)”那一章的大作業(yè)標(biāo)題還帶著“歡樂(lè)”兩個(gè)字聽(tīng)起來(lái)比寫(xiě)紅黑樹(shù)輕松實(shí)際上翻車(chē)率并不低。很多人第一反應(yīng)是找一份現(xiàn)成的連連看源碼跑起來(lái)結(jié)果發(fā)現(xiàn)評(píng)分里一半分?jǐn)?shù)落在“結(jié)構(gòu)設(shè)計(jì)說(shuō)明”上另一半在搜索算法的正確性。這個(gè)實(shí)驗(yàn)真正的考點(diǎn)不是做一個(gè)能玩的游戲而是把“兩個(gè)圖案能否消除”這件事抽象成一張圖再在圖模型上做路徑搜索。棋盤(pán)格子之間的連通關(guān)系屬于拓?fù)潢P(guān)系不是線(xiàn)性表能直接表達(dá)的這正是“非線(xiàn)性結(jié)構(gòu)”四個(gè)字想讓你動(dòng)用的東西。如果你是正在做這個(gè)實(shí)驗(yàn)、或者打算做但還沒(méi)想清楚數(shù)據(jù)結(jié)構(gòu)怎么選這篇能給你一條走得通的落地路徑。我自己的習(xí)慣是先寫(xiě)判定函數(shù)再寫(xiě)界面層順序反了會(huì)一直陷在顯示層的泥潭里。2. 給連連看建立圖模型二維數(shù)組存棋盤(pán)BFS 解決連通判定2.1 為什么棋盤(pán)要用二維數(shù)組而不是鏈表連連看的棋盤(pán)是固定行列的網(wǎng)格最常見(jiàn)的做法是直接用vectorvectorint或者二維數(shù)組來(lái)存。每個(gè)格子存一個(gè)整數(shù)值0 表示空格非 0 表示某種圖案的編號(hào)。這個(gè)選擇背后是有理由的連連看的搜索核心是“從一個(gè)格子出發(fā)判斷能否到達(dá)另一個(gè)格子”這要求對(duì)任意坐標(biāo)的讀取是 O(1)二維數(shù)組天然滿(mǎn)足。鏈表結(jié)構(gòu)在插入刪除上有優(yōu)勢(shì)但連連看棋盤(pán)在游戲過(guò)程中只有“某個(gè)格子從圖案變成空格”這一種修改數(shù)組同樣能 O(1) 完成鏈表反而會(huì)讓坐標(biāo)尋址變得別扭。圖模型在這里是隱式的把每個(gè)非空格子看成一個(gè)頂點(diǎn)把相鄰的空格子之間的通行關(guān)系看成邊棋盤(pán)就形成了一張網(wǎng)格圖。值得注意的是這張圖是動(dòng)態(tài)變化的——每消除一對(duì)圖案就有兩個(gè)頂點(diǎn)從“不可通行”變成“可通行”。所以在寫(xiě)搜索算法時(shí)棋盤(pán)數(shù)據(jù)必須是搜索函數(shù)的輸入?yún)?shù)而不是全局變量里一份被界面反復(fù)改動(dòng)的副本。常見(jiàn)做法是維護(hù)一份board作為唯一數(shù)據(jù)源判定函數(shù)每次接收當(dāng)前局面的拷貝或引用。2.2 搜索算法選型為什么首選 BFS 而不是 DFS連連看的消除規(guī)則是兩個(gè)相同圖案之間能用不超過(guò)三段直線(xiàn)段連接也就是路徑最多拐兩次彎。這里有一個(gè)關(guān)鍵誤區(qū)——大部分人會(huì)下意識(shí)去找“最短路徑”以為路徑越短越能消除但規(guī)則根本不看路徑長(zhǎng)度只看拐彎次數(shù)。于是問(wèn)題轉(zhuǎn)化成在網(wǎng)格圖上找一條從起點(diǎn)到終點(diǎn)的路徑使得方向變化的次數(shù)不超過(guò) 2。BFS 在這里是天然匹配的。把“拐彎次數(shù)”當(dāng)作路徑代價(jià)直行代價(jià)為 0拐彎代價(jià)為 1那么這就是一個(gè)邊權(quán)只有 0 和 1 的最短路問(wèn)題。普通 BFS 隊(duì)列能處理邊權(quán)為 1 的圖但處理不了邊權(quán)為 0 的情況所以這里需要用一點(diǎn)小變體把狀態(tài)擴(kuò)展分為“先直行到底再拐彎”的層序處理或者直接用 0-1 BFS雙端隊(duì)列。在棋盤(pán)尺寸不大比如 10x10 到 16x14的前提下實(shí)現(xiàn)一個(gè)帶拐彎計(jì)數(shù)的普通 BFS 也完全可行只需要在狀態(tài)里多記錄當(dāng)前方向和已經(jīng)拐了幾次。DFS 為什么不推薦因?yàn)?DFS 會(huì)沿著一條路走到底很容易走進(jìn)死胡同而且為了找到“拐彎不超過(guò) 2”的路徑DFS 需要回溯大量分支狀態(tài)爆炸的概率遠(yuǎn)高于 BFS。在棋盤(pán)搜索這種場(chǎng)景下BFS 的層序擴(kuò)展能保證第一次遇到終點(diǎn)時(shí)的拐彎次數(shù)就是最小的DFS 沒(méi)法保證這一點(diǎn)。實(shí)際實(shí)驗(yàn)中用 DFS 寫(xiě)的判定函數(shù)經(jīng)常出現(xiàn)“明明能消除卻判定不可達(dá)”的問(wèn)題排查起來(lái)極其痛苦。2.3 狀態(tài)設(shè)計(jì)方向 拐彎次數(shù)才是完整的狀態(tài)初寫(xiě) BFS 的人最容易犯的錯(cuò)誤是只用一個(gè)二維visited數(shù)組記錄格子是否訪(fǎng)問(wèn)過(guò)。這在普通最短路里沒(méi)問(wèn)題但在拐彎約束下是不夠的。同一個(gè)格子從左邊進(jìn)入和從上方進(jìn)入后續(xù)可走的路徑集合完全不同就算到達(dá)同一個(gè)格子的拐彎次數(shù)相同只要進(jìn)入方向不同后續(xù)能擴(kuò)展的分支就不同。所以visited必須升級(jí)成三維標(biāo)記vis[x][y][dir]表示在坐標(biāo)(x,y)處、當(dāng)前朝向?yàn)閐ir時(shí)的最小拐彎次數(shù)。我用的是四方向編號(hào)0 上、1 下、2 左、3 右。狀態(tài)結(jié)構(gòu)體里存三個(gè)字段坐標(biāo)、當(dāng)前方向、已拐彎次數(shù)。從起點(diǎn)出發(fā)時(shí)沒(méi)有方向可以枚舉四個(gè)方向作為初始狀態(tài)每個(gè)方向的拐彎次數(shù)從 0 開(kāi)始。轉(zhuǎn)移時(shí)如果下一步的方向和當(dāng)前方向一致拐彎次數(shù)不變?nèi)绻灰恢鹿諒澊螖?shù)加 1超過(guò)上限 2 就剪枝。這個(gè)“方向變化才計(jì)數(shù)”的模型是連連看判定算法的核心也是后面所有坑的源頭。3. 消除判定算法的完整實(shí)現(xiàn)狀態(tài)搜索與邊界處理3.1 核心 BFS 路徑搜索代碼先給出判定兩個(gè)格子能否消除的完整函數(shù)實(shí)現(xiàn)。這里用雙端隊(duì)列做 0-1 BFS直行優(yōu)先擴(kuò)展保證拐彎次數(shù)最小時(shí)盡早命中終點(diǎn)。#include deque #include vector using namespace std; struct State { int x, y; // 當(dāng)前格子坐標(biāo) int dir; // 當(dāng)前移動(dòng)方向0上 1下 2左 3右 int turns; // 已經(jīng)拐彎的次數(shù) }; // board: 棋盤(pán)數(shù)據(jù)board[x][y] 0 表示空格非0表示圖案編號(hào) // 判斷 (sx, sy) 與 (ex, ey) 兩個(gè)格子是否能在拐彎不超過(guò)2次內(nèi)連通 bool canConnect(const vectorvectorint board, int sx, int sy, int ex, int ey) { if (board[sx][sy] 0 || board[ex][ey] 0) return false; if (board[sx][sy] ! board[ex][ey]) return false; if (sx ex sy ey) return false; int rows board.size(); int cols board[0].size(); int dx[4] {-1, 1, 0, 0}; int dy[4] {0, 0, -1, 1}; // vis[x][y][dir] 記錄到達(dá) (x,y) 且朝向?yàn)?dir 時(shí)的最小拐彎次數(shù) // 初始化為 -1 表示未訪(fǎng)問(wèn) vectorvectorvectorint vis( rows, vectorvectorint(cols, vectorint(4, -1))); // 0-1 BFS拐彎少的狀態(tài)優(yōu)先從隊(duì)頭出隊(duì) dequeState dq; // 起點(diǎn)本身不可作為路徑經(jīng)過(guò)點(diǎn)從起點(diǎn)的四個(gè)相鄰格子開(kāi)始擴(kuò)展 for (int d 0; d 4; d) { int nx sx dx[d], ny sy dy[d]; if (nx 0 || nx rows || ny 0 || ny cols) continue; // 相鄰格子是終點(diǎn)時(shí)方向一致且不需要經(jīng)過(guò)空格 if (nx ex ny ey) return true; // 只有空格可以經(jīng)過(guò) if (board[nx][ny] ! 0) continue; vis[nx][ny][d] 0; dq.push_back({nx, ny, d, 0}); } while (!dq.empty()) { State cur dq.front(); dq.pop_front(); for (int nd 0; nd 4; nd) { int nx cur.x dx[nd], ny cur.y dy[nd]; if (nx 0 || nx rows || ny 0 || ny cols) continue; // 到達(dá)終點(diǎn)終點(diǎn)本身可以是圖案格不需要是空格 if (nx ex ny ey) { int nt cur.turns (nd ! cur.dir ? 1 : 0); if (nt 2) return true; continue; } // 路徑經(jīng)過(guò)的格子必須是空格 if (board[nx][ny] ! 0) continue; int nt cur.turns (nd ! cur.dir ? 1 : 0); if (nt 2) continue; // 只有更優(yōu)的拐彎次數(shù)才繼續(xù)擴(kuò)展 if (vis[nx][ny][nd] -1 || nt vis[nx][ny][nd]) { vis[nx][ny][nd] nt; if (nd ! cur.dir) { dq.push_back({nx, ny, nd, nt}); } else { dq.push_front({nx, ny, nd, nt}); } } } } return false; }這段代碼的三個(gè)關(guān)鍵設(shè)計(jì)要說(shuō)明一下。第一起點(diǎn)的相鄰格子如果正好是終點(diǎn)直接返回 true這是“兩格緊挨著”的消除場(chǎng)景不需要經(jīng)過(guò)任何空格。第二終點(diǎn)判斷放在障礙判斷之前因?yàn)榻K點(diǎn)本身是有圖案的格子不能被當(dāng)成障礙攔掉這是很容易寫(xiě)反的地方。第三用雙端隊(duì)列做 0-1 BFS方向不變的狀態(tài)放入隊(duì)頭優(yōu)先擴(kuò)展拐彎的狀態(tài)放入隊(duì)尾這樣能更快找到拐彎次數(shù)少的路徑同時(shí)也避免普通 BFS 里同層擴(kuò)展順序?qū)Y(jié)果的影響。3.2 邊界處理路徑能否走出棋盤(pán)一個(gè)容易被忽略的問(wèn)題是路徑能不能經(jīng)過(guò)棋盤(pán)外部的區(qū)域多數(shù)網(wǎng)絡(luò)上的連連看實(shí)現(xiàn)不允許路徑走出棋盤(pán)但某些變體規(guī)則允許連線(xiàn)繞過(guò)棋盤(pán)邊緣。我的建議是實(shí)驗(yàn)里明確寫(xiě)成“不允許出界”因?yàn)轭}目通常只要求在棋盤(pán)內(nèi)部尋找路徑而且允許出界的搜索需要額外處理虛擬外圈代碼復(fù)雜度會(huì)明顯上升。上面給出的版本是不允許出界的。如果你想讓路徑允許貼邊繞行有一個(gè)取巧的辦法在原棋盤(pán)四周加一圈全 0 的虛擬格子搜索時(shí)把邊界擴(kuò)大到rows2、cols2這樣路徑就能“走出棋盤(pán)”了。但要注意終點(diǎn)和起點(diǎn)的坐標(biāo)也要相應(yīng)偏移否則坐標(biāo)映射會(huì)亂。我見(jiàn)過(guò)有人在答辯時(shí)被老師問(wèn)“邊界情況怎么處理”答不出“外圈虛擬空格”方案這就是平時(shí)沒(méi)想過(guò)的細(xì)節(jié)。3.3 參數(shù)設(shè)計(jì)一行代碼控制游戲難度搜索算法本身的參數(shù)不多真正影響難度的是棋盤(pán)尺寸和圖案種類(lèi)數(shù)。棋盤(pán)越大、圖案種類(lèi)越多可消除的對(duì)越少死局概率越高。一個(gè)比較穩(wěn)的參數(shù)組合是8 行 10 列配 5 種圖案或者 10 行 12 列配 6 種圖案。圖案種類(lèi)數(shù)的上限要滿(mǎn)足rows * cols / 2能整除種類(lèi)數(shù)否則圖案數(shù)量不平衡必然出現(xiàn)“某一個(gè)圖案多一個(gè)”的生成錯(cuò)誤。// 參數(shù)配置示例 int rows 10, cols 12; int types 6; // 圖案種類(lèi)數(shù) int board[10][12]; // 實(shí)際使用時(shí)用 vectorvectorint判定函數(shù)是純內(nèi)存計(jì)算單次搜索在 10x10 的棋盤(pán)上耗時(shí)不到 1 毫秒。如果實(shí)測(cè)中發(fā)現(xiàn)點(diǎn)擊后有明顯卡頓優(yōu)先檢查是不是把整份棋盤(pán)拷貝傳參了傳引用能省掉大量復(fù)制開(kāi)銷(xiāo)。另一個(gè)性能隱患是每次調(diào)用canConnect都重新分配三維vis數(shù)組這個(gè)可以接受但如果你要做“自動(dòng)提示”功能會(huì)頻繁調(diào)用數(shù)百次搜索那就要考慮復(fù)用內(nèi)存或者把vis改成整型時(shí)間戳標(biāo)記。4. 地圖生成與可解性保證隨機(jī)地圖不隨機(jī)洗牌邏輯要閉環(huán)4.1 生成合法地圖成對(duì)填充再洗牌連連看地圖生成的核心約束是每個(gè)圖案必須成對(duì)出現(xiàn)。最穩(wěn)妥的做法是先生成一個(gè)包含所有圖案對(duì)的一維數(shù)組隨機(jī)打亂后再填入棋盤(pán)。#include algorithm #include random #include vector using namespace std; // 生成棋盤(pán)rows*cols 必須是偶數(shù) vectorvectorint generateBoard(int rows, int cols, int types) { int total rows * cols; if (total % 2 ! 0) return {}; // 格子數(shù)必須為偶數(shù)才能成對(duì) // 每對(duì)圖案的編號(hào)為 i % types vectorint values; for (int i 0; i total / 2; i) { values.push_back(i % types); } // 復(fù)制一份保證每種圖案都有成對(duì)的另一半 vectorint all values; all.insert(all.end(), values.begin(), values.end()); // 隨機(jī)打亂 mt19937 rng(random_device{}()); shuffle(all.begin(), all.end(), rng); // 填入二維棋盤(pán) vectorvectorint board(rows, vectorint(cols)); int idx 0; for (int i 0; i rows; i) { for (int j 0; j cols; j) { board[i][j] all[idx]; } } return board; }這里有個(gè)容易踩的坑如果直接for (int i 0; i total / 2; i) values.push_back(i % types)那么當(dāng)total / 2大于types時(shí)每種圖案會(huì)出現(xiàn)多對(duì)這沒(méi)問(wèn)題但你需要保證total / 2能被types整除否則某些圖案會(huì)比其他圖案多一對(duì)消除到最后會(huì)剩下無(wú)法配對(duì)的格子。所以實(shí)際參數(shù)選擇時(shí)我會(huì)先算一下(rows * cols / 2) % types 0不滿(mǎn)足就把types調(diào)小或者把棋盤(pán)調(diào)大。4.2 可解性驗(yàn)證與自動(dòng)重排隨機(jī)生成的棋盤(pán)不能保證一定“有解”這里的“有解”指至少存在一對(duì)可消除的圖案。一個(gè)合格的開(kāi)局應(yīng)該保證玩家第一步一定有可消除的對(duì)。最直接的做法是生成后跑一遍全棋盤(pán)掃描調(diào)用canConnect檢查是否存在任意一對(duì)相同圖案可消除。// 檢查當(dāng)前棋盤(pán)是否存在至少一對(duì)可消除的格子 bool hasValidMove(const vectorvectorint board) { int rows board.size(), cols board[0].size(); for (int i 0; i rows; i) { for (int j 0; j cols; j) { if (board[i][j] 0) continue; for (int ii 0; ii rows; ii) { for (int jj 0; jj cols; jj) { if (i ii j jj) continue; if (board[i][j] ! board[ii][jj]) continue; if (canConnect(board, i, j, ii, jj)) return true; } } } } return false; } // 無(wú)解時(shí)重新洗牌 void shuffleBoard(vectorvectorint board) { int rows board.size(), cols board[0].size(); vectorint values; for (int i 0; i rows; i) for (int j 0; j cols; j) if (board[i][j] ! 0) values.push_back(board[i][j]); // 隨機(jī)打亂后填回非空格 mt19937 rng(random_device{}()); shuffle(values.begin(), values.end(), rng); int idx 0; for (int i 0; i rows; i) for (int j 0; j cols; j) if (board[i][j] ! 0) board[i][j] values[idx]; // 重排后仍然無(wú)解就繼續(xù)重排 if (!hasValidMove(board)) shuffleBoard(board); }這里的洗牌邏輯有個(gè)很玄學(xué)的現(xiàn)象隨機(jī)重排后有解的概率其實(shí)很高普通 10x10 棋盤(pán)配 6 種圖案無(wú)解概率大約只有百分之幾所以遞歸重排基本不會(huì)陷入死循環(huán)。但如果地圖參數(shù)設(shè)置得很極限比如 6x6 配 3 種圖案無(wú)解概率會(huì)急劇上升遞歸洗牌的深度可能變得不可控。我通常會(huì)在洗牌函數(shù)里加一個(gè)重試上限比如 20 次超過(guò)后就放寬參數(shù)重新生成避免極端情況下程序卡死。4.3 消除操作的主流程點(diǎn)擊、判定、更新地圖生成和判定函數(shù)都準(zhǔn)備好后游戲主邏輯就非常簡(jiǎn)單了。點(diǎn)擊第一個(gè)格子時(shí)記錄坐標(biāo)和圖案編號(hào)點(diǎn)擊第二個(gè)格子時(shí)調(diào)用canConnect返回 true 就把兩個(gè)格子置 0然后檢查是否勝負(fù)。這里要特別注意每次消除后棋盤(pán)發(fā)生變化之前“無(wú)解”的局面可能變“有解”因?yàn)榭崭褡兌嗔寺窂竭x擇更多。所以必須在每次消除后重新調(diào)用hasValidMove不是只在開(kāi)局檢查一次。“死局檢測(cè)”和“洗牌按鈕”是實(shí)驗(yàn)報(bào)告里的加分項(xiàng)。我在實(shí)現(xiàn)時(shí)把這兩個(gè)功能綁定在一起每次消除后如果hasValidMove返回 false就彈出提示讓玩家選擇洗牌或者判定失敗。洗牌時(shí)只打亂剩余非空格不打亂已經(jīng)消除的空格否則棋盤(pán)會(huì)出現(xiàn)“虛空生成新圖案”的 bug。基于時(shí)間戳的vis復(fù)用技巧在這里能派上用場(chǎng)死局檢測(cè)需要遍歷所有格子對(duì)最壞情況要調(diào)用 O(n2) 次搜索如果每次都重新分配三維數(shù)組UI 線(xiàn)程會(huì)有明顯卡頓。5. 避坑連連看搜索里最容易翻車(chē)的五個(gè)細(xì)節(jié)5.1 終點(diǎn)格子被當(dāng)成障礙攔截現(xiàn)象兩個(gè)相鄰的相同圖案點(diǎn)擊后判定不可消除別的格子之間卻沒(méi)這個(gè)問(wèn)題。原因BFS 的轉(zhuǎn)移條件里寫(xiě)了if (board[nx][ny] ! 0) continue;放在終點(diǎn)判斷之前導(dǎo)致終點(diǎn)格本身是圖案被當(dāng)成障礙提前剪掉了。解決終點(diǎn)的判斷必須放在障礙判斷之前。我在前面代碼里已經(jīng)把nx ex ny ey的檢查放在board[nx][ny] ! 0之前順序不能反。這是連連看判定函數(shù)里最隱蔽也最常見(jiàn)的 bug排查方法是在canConnect入口打印起點(diǎn)終點(diǎn)的坐標(biāo)和圖案值。5.2 只記錄二維 visited導(dǎo)致錯(cuò)誤剪枝現(xiàn)象有些明明能消除的格子對(duì)搜索返回 false而且換一組格子又恢復(fù)正常。原因visited只記錄(x,y)坐標(biāo)同一格子先被某個(gè)方向訪(fǎng)問(wèn)后其他方向到達(dá)該格子的狀態(tài)被丟棄。但不同方向進(jìn)入同一格子的后續(xù)路徑能力完全不同可能先到的那條路已經(jīng)用掉了 2 次拐彎另一條路還一次拐彎都沒(méi)用卻被錯(cuò)誤的“已訪(fǎng)問(wèn)”標(biāo)記擋住。解決把visited改成三維vis[x][y][dir]保存每個(gè)方向獨(dú)立的最小拐彎次數(shù)。這是整個(gè)實(shí)驗(yàn)里最重要的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)點(diǎn)寫(xiě)代碼之前先在草稿紙上畫(huà)一張 3x3 的棋盤(pán)模擬一遍狀態(tài)擴(kuò)展比直接寫(xiě)代碼再調(diào)試快得多。5.3 起點(diǎn)和終點(diǎn)相同導(dǎo)致循環(huán)判斷現(xiàn)象玩家連續(xù)點(diǎn)擊同一個(gè)格子程序進(jìn)入死循環(huán)或者判定為“可消除”。原因起終點(diǎn)坐標(biāo)相同時(shí)BFS 的終點(diǎn)判斷會(huì)立刻命中但此時(shí)并沒(méi)有任何路徑屬于無(wú)效消除。解決函數(shù)入口直接加上if (sx ex sy ey) return false;。這個(gè)檢查看起來(lái)多余但沒(méi)有它點(diǎn)擊第二次同一個(gè)格子時(shí)會(huì)直接消除而且是零步“消除”嚴(yán)重破壞游戲規(guī)則。5.4 洗牌時(shí)把已消除的空格也打亂了現(xiàn)象點(diǎn)擊洗牌后棋盤(pán)上原本空著的位置出現(xiàn)了圖案而且總數(shù)不對(duì)。原因洗牌函數(shù)遍歷整個(gè)棋盤(pán)把所有格子都收進(jìn)數(shù)組包括值為 0 的空格打亂后空格也被填上了圖案。解決洗牌只收集非空格子。我上面的shuffleBoard里只把board[i][j] ! 0的值放進(jìn)數(shù)組重新填充時(shí)也跳過(guò)空格位置。這一點(diǎn)看起來(lái)是“低級(jí)錯(cuò)誤”但在邊界條件沒(méi)想清楚時(shí)很容易犯而且一旦出現(xiàn)對(duì)局?jǐn)?shù)據(jù)就徹底亂了。5.5 拐彎次數(shù)統(tǒng)計(jì)的起止偏差現(xiàn)象路徑明明拐了三次彎卻判定成功或者只拐了一次彎卻判定失敗。原因起點(diǎn)初始化時(shí)把四個(gè)方向的turns都設(shè)為 0這樣第一個(gè)格子直走到第二個(gè)格子時(shí)確實(shí)算 0 次拐彎但如果起點(diǎn)出發(fā)是斜著走的——雖然棋盤(pán)只有四方向斜走并不存在——這里的問(wèn)題是終點(diǎn)相鄰時(shí)的拐彎計(jì)數(shù)從起點(diǎn)到終點(diǎn)如果直接到達(dá)沒(méi)有dir可比較有些實(shí)現(xiàn)會(huì)強(qiáng)行把這次移動(dòng)算成一次拐彎導(dǎo)致相鄰格子反而消除失敗。解決在起點(diǎn)初始化階段先檢查四個(gè)相鄰格子是否是終點(diǎn)是就直接返回 true把這個(gè)場(chǎng)景從 BFS 主流程中摘出去。終點(diǎn)相鄰不需要任何拐彎這是規(guī)則上的例外單獨(dú)處理比硬塞進(jìn)狀態(tài)轉(zhuǎn)移要干凈得多。6. 進(jìn)階雙向 BFS 加速自動(dòng)提示用路徑回溯做消除動(dòng)畫(huà)當(dāng)你把基礎(chǔ)判定函數(shù)跑通之后實(shí)驗(yàn)成績(jī)的上限取決于兩點(diǎn)自動(dòng)提示功能和消除動(dòng)畫(huà)。自動(dòng)提示的本質(zhì)是“找到任意一對(duì)可消除的格子”如果每次都用雙重循環(huán)嵌套canConnect10x10 棋盤(pán)最壞要跑幾百次搜索界面會(huì)卡到肉眼可見(jiàn)。我用的是雙向 BFS 的思路從起點(diǎn)和終點(diǎn)同時(shí)擴(kuò)展各自維護(hù)一套vis狀態(tài)當(dāng)兩個(gè)方向的擴(kuò)展區(qū)域相遇時(shí)說(shuō)明找到一條連通路徑。雙向 BFS 對(duì)“拐彎次數(shù)”這類(lèi)約束同樣適用只需要在狀態(tài)里同時(shí)記錄方向相遇時(shí)合并雙方的拐彎次數(shù)判斷總拐彎是否不超過(guò) 2。實(shí)現(xiàn)提示功能時(shí)有一個(gè)比雙向 BFS 更實(shí)用的技巧把“從某個(gè)點(diǎn)能走到的所有格子”預(yù)計(jì)算緩存下來(lái)。在棋盤(pán)開(kāi)局和每次消除后遍歷所有非空格子以每個(gè)格子為起點(diǎn)跑一次 BFS記錄它能到達(dá)的所有同圖案格子結(jié)果存進(jìn)一個(gè)哈希表。后續(xù)調(diào)用提示時(shí)直接查表就能返回一組可消除對(duì)速度從 O(n2) 搜索降到 O(1) 查表。代價(jià)是每次棋盤(pán)變化后需要重建緩存但棋盤(pán)規(guī)模小重建一次也就幾十毫秒完全在可接受范圍內(nèi)。路徑回溯則是動(dòng)畫(huà)層的事。canConnect只返回布爾值但如果你想做“消除時(shí)高亮連線(xiàn)”需要額外的parent數(shù)組記錄每個(gè)狀態(tài)是從哪個(gè)狀態(tài)轉(zhuǎn)移過(guò)來(lái)的終點(diǎn)命中后再反向回溯得到完整路徑點(diǎn)列表。常見(jiàn)的做法是定義一個(gè)Node結(jié)構(gòu)體數(shù)組每個(gè)擴(kuò)展?fàn)顟B(tài)保存前驅(qū)下標(biāo)找到終點(diǎn)后用棧彈出路徑。在做界面輸出時(shí)把路徑中的拐點(diǎn)坐標(biāo)轉(zhuǎn)成折線(xiàn)繪制指令就能看到一條清晰的三段式連線(xiàn)。我做這個(gè)實(shí)驗(yàn)時(shí)最后一個(gè)教訓(xùn)是canConnect函數(shù)一定要保證“前后兩次調(diào)用之間不依賴(lài)任何全局狀態(tài)”。某次我圖省事把vis數(shù)組聲明成全局復(fù)用結(jié)果上一次搜索殘留的標(biāo)記污染了下一次判定查了大半天才發(fā)現(xiàn)是初始化沒(méi)清干凈。后來(lái)我強(qiáng)制要求自己每個(gè)搜索函數(shù)內(nèi)部自帶狀態(tài)初始化寧可多花幾次內(nèi)存分配也不碰全局復(fù)用。這個(gè)習(xí)慣后來(lái)在寫(xiě)更復(fù)雜的圖搜索時(shí)幫了大忙。希望這篇能幫你在實(shí)驗(yàn)里少走幾步彎路把時(shí)間花在理解圖結(jié)構(gòu)本身而不是和詭異的 bug 較勁。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97内射偷拍| 色噜噜国产在线| 欧美最婬乱婬爆婬牲视频| 中文自拍欧美影视| 欧美日韩在线小说 | 欧美高清无码免费视频高清版| 东北女人的毛片| 久久精品国产99精品亚洲蜜...| 午夜福利在线合集| 人妻天堂综合网| 天天视频网站黄| 欧美偷偷网| 亚洲日本韩国极品一区二区| 18禁超污无遮挡无码免费网| av无线看| 久操97| 91av天美性媒精品视频| 色墦五月丁香| 午夜120视频在线观看| 女生久久网| 噜噜噜噜天天狠狠| 国产AV人人夜夜澡人人爽麻豆| 亚洲操逼无码| 脫衣舞一区二区三区| 色牛aV| 一本一道久久综合久久| 人妻素股| 呦呦一区| 99av| 亚洲人妻中文在线视频| 亚洲人妻久久| 肥臀熟女一区二区三区视频| 欧美日日人人天天| 国产精品在线免费| 色香综合天天影视综合 | 粉嫩久久久极品| 97精品综合久久网| 青久操| 欧美日日网| www99热| 久操视频资源站公开| 日熟女| 日韩免费三级黄片电影| 狠狠操狠狠操操| 酒色综合网| 精品国产a∨一区天美传媒| 操死我了嗯嗯嗯| 蜜臀AV成人精品蜜臀AV久久| 欧美日韩亚洲五月天婷婷| 青青草在线成人视频| 色色色色网站| 色综合99| 超碰国产情侣自拍网| 亚州少妇| 98福利在线视频| 九九这里只有精品| JuliaAnn丝袜熟女系列| 四虎国产精品永久地址入口| 亚洲国产一区二区入口| av网站在线观看了| 超碰久久性爱| 伊人网av| 伊人大香蕉在线| 一区二区三区 丝袜 高跟 美腿| 五月丁香狠狠爱| 在线另类| 久久中日麻豆| 欧洲与亚洲欧美精品中文字幕| 男人天堂综合| 九九九国产精品| 超碰97网站| 亚州综合网| 日韩人妻一二三区视频| 日韩欧美午夜视频在线| 99熟女| 91精品成人www| 91女神在线视频| 九九拍拍精品视频在线播放| 蜜臀AV午夜精品久| 亚洲欧美自拍偷拍| www.色婷婷色综合| 天天综合网1| 小电影欧美91| 亚洲激情综合另类男同| 亚洲国产欧美中文永久| 激情五月天网| 亚洲国产青青| 91网站18| 91丨九色丨国产丨人妻在线| 免费黄色视频网址| 久久久久9999妇女| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 日韩精品免费高清视频在线| 91狠婷| 热热热热日日漂亮永久永久国产日| 亚洲高清男人天堂| 伊人久久综合影院精品久久久| 18禁美女裸体无遮挡啪啪| 精品人妻一区二区三区在| 熟妇综合一区二区三区| 啊v视频在线观看| 久久亚洲天天做| 精品免费成人久久| 国产精品秘 福利姬在线观看| 长长久久88视频| 校园春色中文字幕AV| 嫩草影院永久在线制服丝袜| 国产97在线视频| 一牛影视成人片免费| 天天色综合图片| 国产又大又粗又长视频| 大香蕉视频一二三区| 99热在线观看| 9久久久久久| 国产精品女久久久久av爽| 中文字幕精品一区二区精品| 丝袜美腿操av| 国产精品干干干| 99国产精品人妻人伦| 日韩av熟女一区二区三区成人| 新91视频.cmp| 中文字幕在线高清男人的天堂| av午夜玫瑰| 香蕉欧美| 欧美第38页| 国产极品粉嫩馒头一线天av| 麻豆天美国美国产| AVE乱伦| 日夜啪电影| 97伊人超碰| 国产精品久久久久久久毛片1| 亚洲综合在线高清| 国产成人拍国产亚洲精品| 天天综合91在线| 精品无av| 色婷婷五月综合激情中文字幕| 蜜臀AV成人精品蜜臀AV久久| 精品99999| 一起草av| av中亚| 亚洲国产剧情少妇激情| 国产精品麻豆成人av| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 91久久久久久| 清纯唯美亚洲| wwe 天天干.com| 蜜乳av一区二区| av天天在线| 国产精品毛片?v一区二区三区| 97自拍一区| 久久久精品无码亚免费| 久久综合乱子伦国产免费| 搡老熟女免费视频| 亚洲最大黄网| 国产操伦| 九九热精品视频六| 绯色AV粉色AV蜜臀AV| 精品久久久av无码免费| 91欧美另类| 秋霞免费AV| 99国产天美| 7777奇米影视久久| 亚洲欧美色图片| 久久人妻97久久久久久久| av天堂精品久久| 91美女在线视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 精品性爱| 天天躁夜夜躁狠狠躁AV| 婷婷综合激情| Sekablack无码一区| 久久精品电影| 亚洲成人综合在线| 欧美美女视频| 久久伊人青青草| 韩国嫰模上门援交视频| 青青草原人妻| 青青草五月天| 色爱综合网| 欧美极品美女aaaaaa级黄片| 大色网久久| 夜夜爽爽爽| 性爱乱伦视频免费| 精人妻一区二区三区| 黄页大片在线观看| 在线只有精品| 日本天天操| 明星性猛交ⅹxxx乱大交| 大香蕉伊人网WWWn0n| 日韩人妻免费精品| 亚洲另类欧美精品| 91精品人妻| 狠色婷婷久久一区二区三区_| 志村玲子视频一区二区| 精品在线观看视频在线| 亚洲一区二区三区中文字幕| 91中出| 人人爽夜夜操| 欧美亚洲国产自久久| 国产又粗又长又爽又色| 欧美成人四级在线播放| 日韩免费a级毛片无码a∨ | 欧美极品美女aaaaaa级黄片| 国产JDAV无码视频在线观看| 日本综合色图| 国产精品乱码久久| 久久国产成人精品国产成人亚洲| 精品久9| 男人天堂无码| 亚州高清av| 校园春色宗合网| 啊啊啊啊嗯嗯嗯用力好爽| 国产麻豆福利av在线播放| 亚洲AV麻豆Aⅴ无码电影一| 超碰97国产欧美| 999九九九九国产动| 久久夜夜夜夜| 日本一区99| 97久久超碰国产网站| 熟女性视频| 91美女中出| 狠狠干综合| 日韩午夜啪啪视频| 欧亚在线视频| 天天干,夜夜爽| 十八岁啪啪视频免费看| 黑人美精品 A片| 欧美日韩黄片精品在线 | www.欧精品| 欧美人妻精品| 国产嫩草精品A88AV在线| 99爱久久视频频| 九一综合精品视品av| 91在线视频免费中出| 淫淫总合网| 夜夜高潮夜夜爽高清视频一| 91美女色视频亚洲| 国产精品97超碰| 91天美免费| 国产精品第一页国产大屁股视频免费区| 人妻天堂网| 天天射日日干| 18禁无码永久免费无限制| 国产a片操逼| 国语国产操逼伊人AV网| 午夜精品视频777| 色五月综合| 美腿色图| 九区国产| 99久久9| 男人天堂 天天射| 91夜夜蜜桃臀1区2区3区| 久久人妻一区二区三区高清| 亚洲天堂男人网| 国产黄片精品在线| 熟女人妻久久中文字幕一二区| 日本淫色网| 日本免费一区二区不卡 | 99热在线播放| 大香蕉男人的天堂| 97碰碰色| 天天天天天天天天天天干美女| 成人短视频在线观看| 97国产色综合| 91视频女生| www.av家庭乱伦| 秋霞蝌科网日本一区| 性站 | 91亚洲网站| 97视频在线看| 日本综合色图| 插B在线观看| 日韩无码精品综合久久| 99无码精品| 午夜后入| 麻豆国产97在线| 色婷久久| 欧美天天综合站| 好爽要喷了| 啪啪AV导航| 夜夜操天天肏| 天天网综合| 精品一二三区久久AAA片| 中文字幕乱碼在线| 久久久人妻| 欧美日韩中文亚洲v在线综合| 欧美激情片一区二区| 亚州色图狠狠干| 久久久久九九九九| 国产超碰| 亚洲AV色图一区| 色欲天天综合久久久无码网中文| 婷婷色中文字幕| 9 9无尺码天堂网| 日本孕妇一区二区视频操逼免费看 | 在线国产福利网址导航| 女同性恋一区二区三区精品视频| 丰满人妻-区二区三区免费看| 日韩欧美一级特黄大片| 偷拍五区| 无码逼| 亚洲AV不卡在线观看尤物| 激情综合网亚洲| 五月天婷婷欧美三区| 国产成人主播| 久久成人国产| 亚洲第一页色网| 91精品国产麻豆国产自产在| 国产女主播视频在线观看| 日逼视频日本| 人人摸人人舔一区二区| 日韩国产中文字幕| 亚洲色宗合| 91黑丝露脚| 欧美偷偷网| 久久久免费一级黄片| 97视频在线观看网站| 日本www操操操| 亚洲狠狠入| 六月婷婷综合| aaa亚无码专区| 五月天成人综合| 国产久久久久久| 色综合一区二区三巨| 国产精品一区二区三区免费视频| 精品视频久久久久九九九九9999| 美女裸体无遮挡永久免费观看网站| 青青操97| 超碰成人最新最好看| 亚洲s色图| 亚欧国产无码精品在线| 最新av中文字幕高清| 久操网在线| 日韩视频啪啪| 精品午夜福利| 欧美熟女丝袜| 一二三啪啪专区| 成人七区| 啪啪啪综合网| 欧美综合色,www| 亚洲色图 综合| 精品久久人妻成人网| 欧美性夜| 国产精品密臀网在线观看| 蜜乳AV一区二区三区四| 91人人| 亚洲日韩乱码中文无码蜜桃臀网站 | 波多野42部无码喷潮在线观看| 伊人96在线| 国内91熟女人妻丝袜天天精品视频在线| 色五月AV| 久湿久久| 99re69| 亚洲欧美成人在线| 欧美日韩国产高清在线一二三区| 大香蕉中文在线| 人妻在线大香蕉| 中字乱伦AV| 午夜爽爽爽在线观看永久入口姬片| 久久日韩肥臀| 色悠久久久av| 丝袜喷水在线| 99热精品免费| 欧美极度丰满熟妇hd| 色欲天天综合久久久无码网中文| 9.1小视频| 综合视频91| 免費人妻夜夜爽天天爽爽一区| Blackedraw视频一区二区| 91爱| 欧美综合天堂| 蜜桃午夜视频一区二区| 土豪酒店各种姿势玩弄极品幼稚| 人妻密肉在线观看| 三上制服丝AV| 91啪9色| 日本污ww视频网站| 国产精品免费视频人成| 精品亚洲俞拍视频一区| 韩国黄色片精品久久久| 久久av网| 国产精品999zyz| 神马视频久久久久久| 精品一级毛片在线观看| 97一区二压| 麻豆天美传媒在线视频天堂| 少妇高潮99p| 欧美激情综合| 欧美在线观看综合国产| 把腿张开老子CAO烂你| 岛国色情视频在线观看| 色五天伊人| 中文字幕一区二区免费在线| 日本女优在线视频福利| 国产欧美一区激情交| 午夜黄色免费在线观看| 亚洲欧美精品福利在线| 无码伊人久久大杳蕉中文无码| 91九久| 日本天天操| 日日日日日| 精品视频日日夜夜| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 综合 青草 伊久久 影院 综合 | 青青草原人妻| 国产精品午夜成人福利| 久久人妻无码毛片A片麻豆| 亚洲日韩少妇一道本视频| 久久久久人| 中文字幕第二页| 抽插一区二区视频| 日韩性爱小视频| 日本操逼aaaaa| 日韩熟女乱伦中出| 综合影视国产无码| 99热只有| 色眯眯av| 大香蕉狠狠爱| 国产成人欧美一区二区三区的国产| av天堂精品久久| 欧美性爱十八禁| 狠狠狠狠狠干| 熟女自慰久久久| 蜜桃久久久久久| 蜜臀aV午夜一区二区三区| 亚州精品人妻一二三区| 特色a在线上| 久久免费99精品久久久久久| 丁香五月性| 嗯啊不要啊啊在线观看视频| 超碰欧美在线欧美| 色97欧美| 精品人妻一区二区视频| 2018色综合天天操| 成人av免费观看| 亚洲天堂另类小说男人| 人人澡人人澡人人| 激情五月综合开心五月| 你想操日本小逼吗| 大香蕉伊人在线成人AV在线观看| 天天碰久久入| 青草草免费网站av| 天天干少妇| AV中文字幕剧情1区2区3| 色约约一区=区三区| 午夜a成v人电影| 婷婷五月天av| 欧美淫乱视频| 特级特黄一级毛片免费| 亚洲激情网一二三四区| 加勒比性爱成人在线| 久久婷婷电影网| 亚洲aV无码成人在线观看| 久久黄黄| 亚洲高清欧美总合| 亚洲操逼无码| 国产视频大全| 性爱视频免费网址| 大香蕉 222| 日本亚洲嫩草影院啪啪| 国产精品久久久久久片| 97精品第3页| 加勒比综合| 5278欧美一区二区三区| 国产午夜在线观看| 亚洲精品日日夜夜52| 加勒比海成人视频网| 12一15性XXXX粉嫩国产| 日日夜夜天天| 亚洲欧美97| 国产欧美亚洲精品a第2页| 中出789在线视频| 国产精品人妻免费精品| 亚洲欧洲视频小说在线观看| 欧美色院| 亚洲一二三四区机械| 欧美黄页| 精品人妻一区二区免费蜜桃| 欧美欧美啪啪视频| 久草久热| 精品日韩人妻精品一二三区| 91精品黄在线观看| 97超碰欧美手机| 色综合久| 性天堂| 东北夫妻性偷拍| 麻豆美女丝袜人妻中文| 婷婷情色综合网| 春色91| 亚殴在线| 亚洲自拍偷拍视频在线| 97亚洲国产影视| 夜草网站| 美女毛片999| 韩国黄片aaaa| 色老牛| 亚洲欧美日韩综合在线尤物 | 2024黄色视频| 亚洲视频一二区| 影音先锋视频在线| 偷拍新久久| 欧美色图天堂在线| 国产欧美在线观看免费观看| 九9热伊人| 免费a在线播放v| 美女9118禁| 涩爱AV在线| 三级激情网站| 久久精品区| 国产夜夜操| 欧美东京热精品A∨| 人妻 欧美亚洲| 久久婷婷五月综合| 国产二区三区免费视频| q2午夜理论片夜色av| 色色丁香| 99久久精品无码一区二区毛片免费 | 青娱乐导航AV| 久久av成人无码免费| 嗯嗯不要视频| 日日噜噜夜夜久久亚洲一区二区| 91精品国产麻豆国产自产在| 无码不卡亚洲成?人片| 欧美亚洲高清不卡| 色欧美天天| 青草精品视频日本久久久久网站在线| 九九九九免费高| 人妻少妇色综合| 99国产精品视频尤物| 亚洲综合伊人无码久久| 91高跟美女在线播放| 免费AV播放| 亚洲色人| 国产AV精久久| 久久系列| 后入日本1234| 欧美性爱一区二区三区四区| 夜夜中出国产| 在线观看av区| 加勒比久久综合网高清| 亚洲性爱成人| 最近二区三区视频大全| 国产精品对白自产拍| 亚洲高清视频在线观看| 小草三级久久观看| 人妻少妇精品一区二区三区| 亚洲色图殴美色图激情乱伦| 欧美熟妇成人一区二区| 中国一级αV| 欧美激情精品久久久久久| 97 九色| 亚洲91极品| 99碰碰| 亚洲日韩美女中文字幕乱| 三级日韩一区二区三区| 色激情综合网站| 传媒在线观看一区二区三区| 女上位精品在线| 午夜AV污污污| 超碰在线第一页| 99蜜桃臀久久久欧美精品网站| 青青青操| 九九久久久久久爱| 男人下部插入女人下部| 在线女人91| 伊人大香蕉在线| 欧美熟女激情| 久久久久久久78| 殴美日韩m| 久久爽爽精品| 亚洲黄色网址| yy少妇精品久久| 97丝袜亚洲在线播放| 欧美论理片| 91 国产丝袜在线播放-百度| 极品美女嘿咻| 综合久久9| 久久超碰网| 日韩欧洲操屄视频| 免费人成在线观看网站品爱网| 秋霞成人一级在线观看| 自拍视频一区在线观看| 99久久精品无码一区二区| 亚洲精品一区二区三区在线播放| 久久亚洲精品成人av| 中文字幕在线观看二区三区| 九色婷婷| 久久侵犯人妻爽爽爽| 91在线免费观看处女| 日韩AV一区二区三区三州三州| 99精品网站| 欧洲亚洲人人爽爽视频| 久久无码精品| 欧美的性爱网站免费| 亚洲成人美女无吗| 天天日夜夜爽| 中文字幕片| 加勒比海成人视频网| 91热热色| 亚洲精品免费中文字幕| 夜夜影视四色| 黑操B| 久操 高清| 亚洲色图 91| 亚州91| 久久无码成人| 麻豆国产尤物AV| 久久神马影院| 中文字幕乱妇免费视频| 2020中文在线一区二区三区| www.超碰在线| 啊啊啊啊啊在线视频| 男女做爰猛烈动高潮A片免费应用| 欧美顶级黄色大片免费| 97色色婷婷| 性爱欧美五月| 999综合网| 免费看黄视频亚洲网站| 国产亚洲一黄| 中文在线视频| 日韩无码三级影院| 天天狠| 碰人碰碰人人开房人肉| 日本在线观看网址| 色综合久久久久| 9精品久久| 性天堂| 国产97色在线| 日韩人妻少妇 一区二区三区| 欧美中文字幕男人天堂久久精品| 久久久久久久九九九九九九| 国产熟码AV| 国内97干免费看| 亚洲乱熟女一区二区| 亚洲人在线| 中文字幕综合人妻| 人妻二区| 久久久影院| 插插综合网天天影视网| 天天激情干| 欧洲乱码一区二区| 久久中出| 啊啊啊啊啊啊啊国| 麻豆成人影音在线| 中文激情网| 丝袜高跟澳门91视频| 人妻啪| 国产成人+综合亚洲+天堂| 好舒服视频| 艹精品| 欧美色日本| 人人弄人人摸| 成 人 影视 一区 二区 三区 四区| 麻豆成人影音在线| 激情小说五月天| 日韩91网| 九九热在线精品视频| 国产91 丝袜在线播放 | 日本国产欧美高清在线| 日韩欧美水蜜桃人妻| 啊啊嗯嗯好爽| 嗯嗯啊啊啊好舒服| 2018天天日天天日| 国内操逼视频二区| 中文字幕在线观看永久| 亚洲欧美九九| 嫩呦国产一区二区三区AV| 日韩人妻无码精品系列| 影音先锋少妇| 91强在线播放| 久久精品国产亚洲AV成人直播| 久草成人影片| 狠狠操狠狠爱| 欧美v日韩v亚洲v最新在线| 少妇被玩视频二三区| 亚洲国产精品成人综合| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 麻豆精品A片免费观看| 亚洲欧洲成人在线电影| 黑人中出21连凳花野真衣| 亚洲伊人a线观看视频| 日韩中文字幕av在线播放| 91午夜无码| 亚洲伊人青青草| 熟女人妻久久中文字幕一二区| 国产熟妇 码视频户外直播| 射丝袜大香蕉| 色5月婷婷| 亚洲天天综合| 欧美视频第二页| 国产精品无码在线| 成人开心网在线视频| 91麻豆天美国产欧美| 乱伦一二三| 天天天堂影视日韩亚洲91| 天天肏夜夜肏| 青青操网| 中文字幕人妻丝袜乱一区三区| 人妻天天操天天爽视频免费| 丰满人妻一区二区三区性色| 日夜尻逼网| 婷婷亚洲中文字幕在线| 久久精品国产亚洲AV片多多 | 成年人性爱日韩| 欧美黑人熟妇精品91| 日本顶级天天操狠狠操夜夜操中文字幕| 日韩午夜啪啪视频| 日韩视频精品在线观看| 久久久久幕乱码| 国产精品经典一卡久久久| 国模精品娜娜一二三区| 天天日天天干天天色| 熟女久久| 伦在线97| 性感女人网页在线观看视频| 国产97色在线| 国产大陆天天艹| 男女香蕉一区二区| 亚洲精品一区二区三区新线路| 肉嘟嘟www视频在线观看高清| 国产精品96| 国产深喉| 96久久久精品| 东北女人av| 国产精品麻豆成人AV艾秋| 萌白酱自拍视频| 中文字幕av亚洲精品| 成人情色综合网| 久久草视频污视频| 伊人991| 偷拍欧美激情| 五月丁香婷婷综合| 日本高清有码网址视频| 97亚洲精品超碰| 97视频在线观看免费高清| 少妇专区一二三四五| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 97伊人网| 大粗鳼巴久久久久| 日本大香蕉综合网红本杳社区| 久久久99999久网站| 夜夜高潮夜夜爽| 中文字幕av色| 香蕉在线一区二区三区| 97色伦欧美| caorenqi shipin| 99热啪啪| 欧美国产日韩清纯唯美| 五月丁香综合网| 无套内射性感少妇视频| 国产精品探花视频| 中日韩欧美精品无码AⅤ一区二区| 国产一级特黄大片处女| 人人弄人人摸| 天天夜躁日日躁狠狠2002| 在线a亚洲视频播放在线| 加勒比综合| dy888午夜老子影视达达兔| 精品视频在线观看精品| 青青操网| 精品国产91av一区二区三区 | 亚洲精品不卡一二三区| 亚洲污污网站| 麻豆区久久久久亚| 巨乳特殊服务按摩| 天美传媒精品久久视频| 9丨久久九九九| 欧美综合亚洲综合| 国产91福利小视频在线观看| 亚洲一本大道中文字幕无码在线| 日韩欧美综合激情| 天天干美少妇一区| 密臀AV在线| 久久线上视频免费看| J?P?NESEHD熟女熟妇伦| 无码乱人伦中文视频| 97亚洲综合电影| 十八禁电影伊人网| 综合影院永久入口国产| 欧美 亚洲 偷拍自拍| 欧美亚洲高清不卡| 草草影院最新网址| 神马久久午夜| 欧洲一区二区| 福利五区| 噜噜瑟| 欧美日韩精品久久久久东北老熟妇| 国产少妇与亚洲av| 久久性爱免费送| 肉丝中文无码高清| 欧美日韩国产中文精品字幕自在自线| 精品乱子一区二区三区99| 2019天天干| 蜜桃传媒一区二区亚洲| 中文操逼字幕| 午夜天天碰综合视频| 欧美美女视频| 精品精品精品| 热热色国产一二区AV| 老司机午夜精品福利视频一区二区| 97aiaiai| jiujiujiujingpin| 伊人991| 男人的天堂无码| 不卡视频一区蜜桃视频 | 人妻精品一区二区在线| 九月丁香婷婷| 精品国产av一区二区三区四区入口 | 欧美亚洲韩国视频十五区 | 黄色操人| 爱射综合| 韩国一级做a久久久久| 亚洲高清无码AAA久久久精品| 亚洲色图美腿丝袜| 中文字幕高清精品一区| 99自拍B亚洲| 大学生美女口爆| 日本不卡卡一区| 操逼视频国产无套| 天天日日夜夜| 精品国产Av无码久久久伦古装| 色播丁香| 亚洲中文字幕熟女| 床上啊啊啊一区二区三区| 大色网久久| 男人的天堂一区三区| 伊人久久亚洲中文字幕不卡| 黄色片A级一区二区三区| 999日韩中文精品观看视频。| 一区超碰一区| 五月综合视频| 超碰九区| 欧美国产有色电影| 午夜黄色免费在线观看| 久9爱经典视频| 99爱爱| 人妻无一区二区三区| 国产无遮挡| 国产精品久久久久久久毛片1| 亚洲第91页 | 91小视频| 99999久久精| 亚洲精品国产精品乱码不卡| 免费看日产一区二区三区| 国产女s强制榨精视频| 国产乱青青草久久| 国模限制级电影| 女人午夜视频777| 国产精品一区二区a| 91路www| 久久精品人体AV| 日韩操逼HD| 亚洲天堂久久久久久粉红视频| 性老妇一区二区三区| 人妻久久久久久久久久久久久久久| 中国AAAAAA黄色片| 黄骗免费网站| 四虎影视国产精品| 啊啊啊啊好大好硬啊啊啊啊啊 | 中文字幕人成乱码熟女香港| 大色综合| 日本乱人伦片中文三区| 四虎影视精品| 欧美亚洲激情| 人妻三级在线中文字幕| 夜色综合| 日韩在线地址一| 日韩免费在线观看不卡| 内射小黄片| 欧美日韩另类在线| 日本欧美韩国国产在线| 日韩99精品视频综合区| 中文AV制服乱伦| 夜夜爽夜夜操| 亚洲学生妹高清av| 黑人娇小av在线播放| 欧美激情 一区| 美女黄网| 搡老人老9丨女老熟人| yirendaxiangjiashipin| 91 国产丝袜在线播放-百度| 国产久久久久久| 男男H黄动漫啪啪无遮挡网站| 亚洲日韩一区电影| 久久综合超碰| 男女啊啊啊啊啊| 97在线观看| 被男人吃奶很爽的毛片| 入口操逼网站| 26uuu欧美| 午夜激情床戏激情| 亚洲熟妇综合久久久久久| 国产路线专区| 97超碰护士| 中文字幕狠狠玩| 欧美日韩性爱精品| 麻豆国产成人精品| 一本色道久久综合狠狠操| www亚洲欧美| 国内毛片婷婷六月色| www.久久| 欧美偷偷网| 中文字幕欧美日韩三级| 亚洲免费成人在线高清无码视频| 91干熟女| 日韩丝袜高跟制服在线观看| 亚洲双插| 亚洲国产精品有声| 极品粉嫩一区二区| 视频国产欧美在线播放| 黄色片大香蕉| 蜜臀久久在线视频| 91成人高清在线观看| 日本污ww视频网站| 人妻喷水| 狠狠操狠狠插| 亚洲97精品| 精品熟女一区=区三区| 亚洲欧美setu| 国产精品熟女九色九色蜜臀| 欧美亚洲综合色| 久久久精品久久| PMv在线观看| 国产刺激视频| 亚洲欧美综合| 欧美在线啊啊啊 | 天天插夜夜爽| 欧美亚洲色图另类国产| 蜜伊人色综合97| 亚洲精品一二牛牛| 欧美色吧综合| 91精品啪在线观看国产城中村| 亚洲第一页色| se吧提供国产乱老熟视频胖女人| 2000亚洲男人天堂| 99在线无码精品秘 入口黑人| 东北老熟女| 麻豆国产成人精品| 欧美性猛交美女自慰91| 人妻少妇精品久久久| 人妻一区视频| 中文字幕一区二区视频在线观看| 九色97| 精品亚洲国产成人av网站| 东京热综合久久一区二区| 99青草| 全球成人中文在线| 内射老妇BBWX0C0CK| 9997se| 欧美A√综合网 | 毛片视频白嫩| 97干在线| 日本1区2区不卡视频| 97在线视频观看| 日本亚洲嫩草影院啪啪| 日韩淫色网| 91在线视频免费中出| 操碰97| 无码精品一区二区三区潘金莲| 97在线观看视频| 国产乱码精品久久久久久| 亚洲色图大香| 东京日日夜夜| 婷婷久久网| 婷婷五月天网| 超碰在线99| 艹少妇网站| 一,爱啪啪,在线免费视频| 久久受www免费人成| 成人免费毛片| 伊人操你| 久久av无码| 男女做爰猛烈动高潮A片免费应用| 日本中文字幕熟妇| 91男人天堂网| 国产精品夜夜夜| 欧洲精品二区| 91美女在线| 日韩欧美性吧婷婷乱伦大香蕉 | 国语精品av| 日韩综合97p| 91亚洲色图| 亚洲精品三区在线观看| 欧美另类精品xxxx| 人人插人人摸人人| 五月婷婷六月色| 国产精品一区人妻精品阁在线| 天综合网| 亚洲人码13| 超碰色图| 亚洲天堂人妻熟妇视频| 欧美日韩国产高清在线一二三区| 囯产操逼片| 欧美日不卡| www.男人天堂| 欧美碰碰综合色| 亚洲麻豆av一区二区| 久久久亚洲欧美综合| 偷拍 精品另类 凸凹了四区| 激情五月综合网| 日本新免费二区三区| 男人的天堂99| 八戒无码国产午夜福利| 大香交伊人网| 少妇高潮喷水无套久久久久久| 99re9| 亚洲欧美精品福利在线| 97人人中文网| 男人的天堂99| 高清在线偷拍自拍视频| 99www.bibizy香蕉资源国产一区二区三区高清 | 怡红院一区二区熟女人妻| 国产一区96在线| 欧美日韩久久精品爱爱| 精品毛片久久久精品毛片| 国产乱码精品久久久久久| 伊人91| 天无日色综合| 热99这里有精品综合久久 | 黄污污污污| rivers-china.com| 天天日B夜夜干B时时操B| 亚洲永久AV无码精品秋霞| 亚洲伊人成综合成人网| 91 亚洲 欧洲| 又大又大又大又粗爽高潮观看| 无码国产精品午夜不卡(| 99蜜月精品久久| 依人大香蕉| 青青久久艹| 久久久久久中文字幕中文字幕最新| 久久一区二区蜜桃| 久久大香蕉手机高清视频| 欧美 牲| 综合伊人激情| 黄页网站成人免费| 337p大胆噜噜噜噜噜91Av| 日1区2区3区2020| 99爱久久视频频| 国产精品制服丝袜清纯唯美| 亚洲第一页色网| 日本五十路在线| 91 刺激在线| 日日超碰亚洲| 热热色AV| 色综和网| 97超久碰| 国产老熟女| 91GD.COM| 国产强奸超碰AV| 操婢日韩| 久综合国内精品自在自线| 中文字幕一区二区三区人妻不卡| 久久天天躁日日躁狠狠躁 | 国产精品制服丝袜清纯唯美| 美女诱惑久久| 91狠狠综合久久| 综合色久欲| 91在线视频免费中出| 青青草中文-久久青草精品一区二区三| 亚洲欧美一区二区网址| 欧美综合第一页| 欧美九九九九九| 神马麻豆福利院| 久草这里只有精品| 97超碰国产亚洲精品| 99日免费视频中文字幕| 殴美牲| 亚洲精品骚逼| 国产视频一区二区在线| 一二三啪啪专区| 免费久久精品麻豆一区二区av| 日韩av不卡在线观看| 青娱乐二区免费| 国产黄色影片在线观看| 欧美色视频在线| 女人双腿搬开让男人桶| 大香樵伊人网| 人妻精品4K4K4K4K4| 裸体美女久久久| 久9九综合在线| 色欲Av人妻精品一区二| 国产三级中文有码在线视频| 日韩精品一区的| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 96国产污污污丝袜| 午夜操一视频一区| 亚洲国产精品无码AV久久| 亚洲加勒比久久日本道| 久久久久久久伊人精品| 一本大道不卡一二三区| 日欧操屄视频| 久久免费看高潮毛片韩国| 99热线麻豆| 亚洲啪AⅤ永久无码| 亚洲综合色婷婷| a人欧美综合天堂麻豆| 色嗨嗨在线| 密桃99999| 超碰久久.com| 免费一级a毛片久久久久久鸭绿欲| 乱伦熟女区| 97国产伦理| 噜噜噜在线视频| 超91综合网| 久久精品国产97欧美精品亚洲| 最新岛国大片| 久久精品免费| 中文字幕一区二区视频在线观看 | yw尤物av无码点击进入麻豆| 亚洲激情AV| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 天天综合有色网| 国产在线视视频有精品| 一本久久精品中文字| 亚洲阿v天堂无码z2018| 美腿色图| 狠狠色伊人亚洲综合网站色| 国产天美欧美| 97操| 美女网站黄页| 97超碰人人模人人拍人人| 精品然女一区二区| 精品亚洲黄色片 国产精品导航一区二区 | 丁香五月婷婷五月| 看日韩黄片| 91天天综合在线| 欧美性生活内射| 欧洲色| 自慰白浆在线观看| 天天日天天搞天天干| 99热在线播放| 成人毛片免费| 2025亚洲男人天堂| 欧美日韩国产一区二区小黄片大全| 综合网欧美在线| 日本精品中文字幕视频| 国内黄色精品| 国产女同在线观看视频| 麻豆天美传媒在线视频天堂| 激情综合二| 97中文热色| 淮穴色AV| 岛国片在线观看视频亚洲| 春色综合免费| 青娱乐 成人娱乐在线| 日本熟女不卡视频| 少妇99| 91oumei| 琪琪精品免费一区二区三区 | 欧美熟女丝袜| 亚洲无套久久嗯嗯| 9久精品| 欧美精品97| 欧美韩日精品资源| 国产高潮AA片免费看| AV在线性爱| 亚洲,日韩,欧美,成人播放| 国产又黄又粗的视频| 久久在肏|