日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图Graph--农夫过河问题(BFS/DFS应用)

發布時間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图Graph--农夫过河问题(BFS/DFS应用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

農夫過河問題:

/*** @description: 農夫過河問題(羊,白菜,狼),一次最多帶一個東西過河,* 農夫不在的情況下羊會吃白菜,狼會吃羊,如何平安過河* @author: michael ming* @date: 2019/6/13 20:06* @modified by: */ #include <iostream> #include <queue> #include <memory.h>#define MaxVertexNum 10 //最多10種情況(頂點) using namespace std; struct vertexType {int farmer;int wolf;int sheep;int vegetable; }; class MGraph_Farmer //鄰接矩陣圖類 { public:vertexType vertex[MaxVertexNum]; //頂點表int edges[MaxVertexNum][MaxVertexNum];//邊的鄰接矩陣int vN, eN; //頂點和邊的數量int visited[MaxVertexNum]; //訪問標志int prev[MaxVertexNum]; //存儲搜索路徑MGraph_Farmer():vN(0),eN(0){memset(visited,0, sizeof(int)*MaxVertexNum);}void clearPrev(){for(int i = 0; i < MaxVertexNum; ++i)prev[i] = -1;}int findPos(int F, int W, int S, int V)//查找頂點在圖中的位置{for(int i = 0; i < vN; ++i)if(vertex[i].farmer == F && vertex[i].wolf == W &&vertex[i].sheep == S && vertex[i].vegetable == V)return i;return -1;}int is_safe(int F, int W, int S, int V)//判斷是否安全{if(F != S && (W == S || S == V))//人和羊不在一起時,狼羊或者羊菜在一起,不安全return 0;return 1;}int is_connected(int i, int j)//判斷狀態之間是否可以轉換{int k = 0;if(vertex[i].wolf != vertex[j].wolf)k++;if(vertex[i].sheep != vertex[j].sheep)k++;if(vertex[i].vegetable != vertex[j].vegetable)k++;if(vertex[i].farmer != vertex[j].farmer && k <= 1)//農夫每次需要過河,只能帶一件東西return 1;return 0;}void creatGraph()//建立圖的存儲矩陣{int i = 0, j, F, W, S, V;for(F = 0; F <= 1; F++)//生成所有安全狀態的頂點for(W = 0; W <= 1; W++)for(S = 0; S <= 1; S++)for(V = 0; V <= 1; V++)if(is_safe(F, W, S, V)){vertex[i].farmer = F;vertex[i].wolf = W;vertex[i].sheep = S;vertex[i].vegetable = V;i++;}vN = i;//安全頂點個數for(i = 0; i < vN; ++i)for(j = 0; j < vN; ++j)if(is_connected(i,j))//i,j兩種狀態可以轉換,他們的邊置1,否則置0{edges[i][j] = edges[j][i] = 1;//無向圖eN++;}elseedges[i][j] = edges[j][i] = 0;//無向圖eN /= 2;}void dfs(int s, int t){memset(visited,0, sizeof(int)*MaxVertexNum);clearPrev();dfs_path(s, t);if(visited[t])printPath(s,t,t);}void dfs_path(int s, int t)//dfs搜索s到t的路徑{int j;visited[s] = true;for(j = 0; j < vN; ++j)if(edges[s][j] == 1 && !visited[j] && !visited[t]){prev[j] = s;//記錄路徑dfs_path(j, t);}}void printPath(int s, int t, int k){if(k != s){printPath(s,t,prev[k]);}cout << endl;cout << "(" << vertex[k].farmer << vertex[k].wolf<< vertex[k].sheep << vertex[k].vegetable << ")";}void bfs(int s, int t)//bfs搜索s到t的路徑{memset(visited,0, sizeof(int)*MaxVertexNum);clearPrev();queue<int> q;q.push(s);visited[s] = true;int j, w;while(!q.empty()){int w = q.front();q.pop();for(j = 0; j < vN; ++j){if(edges[w][j] == 1 && !visited[j]){prev[j] = w;if(j == t){printPath(s,t,j);return;}visited[j] = true;q.push(j);}}}} };int main() {int s, t;MGraph_Farmer farmerCrossRiver;farmerCrossRiver.creatGraph();s = farmerCrossRiver.findPos(0,0,0,0);t = farmerCrossRiver.findPos(1,1,1,1);cout << "dfs搜索:";farmerCrossRiver.dfs(s,t);cout << endl << "bfs搜索:";farmerCrossRiver.bfs(s,t);return 0; }

總結

以上是生活随笔為你收集整理的图Graph--农夫过河问题(BFS/DFS应用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级特毛片 | 欧美黄色激情视频 | 午夜黄色av | 亚洲精品无码永久在线观看 | 91丨九色丨国产在线 | 亚洲精选一区二区三区 | 韩国三色电费2024免费吗怎么看 | 少妇无套内谢免费视频 | 亚洲女同志亚洲女同女播放 | 99国产精品白浆在线观看免费 | 日韩欧美一级视频 | 久草大 | 天天做天天看 | 91直接看| 国产美女作爱视频 | 亚洲综合在线一区二区 | 久草婷婷 | 福利视频亚洲 | 综合久久99 | 中文字幕第22页 | 中文字幕伦理 | 91高跟黑色丝袜呻吟在线观看 | www.四虎com | 亚洲丝袜av | 激情一区二区 | 在线日本中文字幕 | 火影黄动漫免费网站 | 香蕉视频网站入口 | 干干干操操操 | 海角官网 | 91a视频| 九七久久| 你懂的在线免费观看 | 色老汉av一区二区三区 | 农村村妇真实偷人视频 | 99九九视频 | 欧美影视 | 国产专区精品 | 午夜免费看片 | 在线观看日本网站 | 日少妇b| 69一区二区 | 免费的黄色一级片 | 欧美不卡网| 日韩草逼| 国产精品高潮呻吟久久久 | 亚洲一二三区视频 | 动漫美女被吸奶 | 国产精品video | 青娱乐在线视频观看 | 欧美视频三区 | 国产一区二区三区中文字幕 | aaaaa一级片 色图社区 | 中文字幕天堂av | 麻豆久久久久久久 | 国产在线一二三区 | 欧美91精品久久久久国产性生爱 | 四虎影视免费在线观看 | 四虎综合| 天天干天天上 | 天天摸天天干 | 亚洲久久在线观看 | www.欧美精品 | 韩国av三级 | 男裸体无遮挡网站 | 香港日本韩国三级网站 | 蜜臀久久精品久久久久 | 亚洲最大福利网站 | 午夜性色福利影院 | 成人免费在线看片 | 亚洲视频在线观看免费 | 最好看的2019年中文视频 | av资源新版在线天堂 | 久久入 | 国产麻豆乱码精品一区二区三区 | 国产女同在线观看 | 午夜肉体高潮免费毛片 | 国产精品第七页 | 国产重口老太伦 | 国产精品日日做人人爱 | 亚洲蜜桃视频 | 国产专区在线视频 | 91精品国产综合久久久蜜臀粉嫩 | 欧美精品做受xxx性少妇 | 国产视频a | 91色在线视频 | 亚洲中文字幕第一区 | 亚洲国产日韩av | 在线观看黄色网页 | 亚洲一区影视 | 黑人精品xxx一区一二区 | 亚洲综合天堂 | 农村老女人av | 亚洲精品18 | 污视频网址在线观看 | 天天射天天干天天 | 国产jjizz一区二区三区视频 | 91网站在线免费观看 | 一级黄色片在线免费观看 |