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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

从(0,0)到(n,n)——广度优先及其改进

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从(0,0)到(n,n)——广度优先及其改进 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近力扣刷了一些廣度優先,深度優先的題目,看了b站的奇樂編程學院的一個尋路算法視頻,突然想到這個知識點在離散的課堂上也講過,從(0,0)到(n,n)要走多少步,其中還包括一些特殊問題,比如不能通過對角線,有障礙物等。

卡特蘭數

學過離散的孩子應該都知道這個神奇的東西,我理解的卡特蘭數是一個滿足很多現實情況的數列。比如一個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列? 又比如依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?…比較經典的問題就是今天要討論的從(0,0)到(n,n)一共有多少種方式或者是最短路徑是什么。卡特蘭數是有公式可以解決的,這里先給出求卡特蘭數c++的應用。

void catalan() //求卡特蘭數 {int i, j, len, carry, temp;a[1][0] = b[1] = 1;len = 1;for(i = 2; i <= 100; i++){for(j = 0; j < len; j++) //乘法a[i][j] = a[i-1][j]*(4*(i-1)+2);carry = 0;for(j = 0; j < len; j++) //處理相乘結果{temp = a[i][j] + carry;a[i][j] = temp % 10;carry = temp / 10;}while(carry) //進位處理{a[i][len++] = carry % 10;carry /= 10;}carry = 0;for(j = len-1; j >= 0; j--) //除法{temp = carry*10 + a[i][j];a[i][j] = temp/(i+1);carry = temp%(i+1);}while(!a[i][len-1]) //高位零處理len --;b[i] = len;} }

廣度優先

廣度優先大家都很熟了,而且尋道這類問題廣度優先幾乎是萬能解法,當然了既然是萬能解法那往往效率就不是最高的。從起點開始把起點周圍四個點進隊,每次從隊首拿一個出來并標記為已訪問,直到隊列為空則跳出循環。

#include<iostream> #include<stdio.h> #include<vector> #include<map> #include<queue> #include<stack> using namespace std;const int Min = 0; const int Max = 10; int Map[Max + 1][Max + 1] = { 0 }; int mark[Max + 1][Max + 1] = { 0 }; class find_path { public:void dfs(pair<int,int> begin,pair<int,int>end) {//Exception//...queue<pair<int, int>>qu;qu.emplace(begin);while (!qu.empty()) {pair<int, int>temp = qu.front();qu.pop();if (temp.first-1 >= Min && !Map[temp.first-1][temp.second ]) {pair<int, int>up(temp.first-1, temp.second );if (up == end)break;qu.emplace(up);Map[temp.first-1][temp.second ] = 1;mark[temp.first-1][temp.second ] = 1;}if (temp.first+1 <=Max && !Map[temp.first+1][temp.second ]) {pair<int, int>down(temp.first+1, temp.second );if (down == end)break;qu.emplace(down);Map[temp.first+1][temp.second ] = 1;mark[temp.first+1][temp.second ] = 2;}if (temp.second-1 >= Min && !Map[temp.first ][temp.second-1]) {pair<int, int>left(temp.first , temp.second-1);if (left == end)break;qu.emplace(left);Map[temp.first][temp.second-1] = 1;mark[temp.first][temp.second-1] = 3;}if (temp.second + 1 >= Min && !Map[temp.first][temp.second + 1]) {pair<int, int>right(temp.first , temp.second+1);if (right == end)break;qu.emplace(right);Map[temp.first][temp.second + 1] = 1;mark[temp.first][temp.second + 1] = 4;}}} };int main() {find_path test;pair<int, int>begin(1, 1);pair<int, int>end(6, 6);Map[begin.first][begin.second] = 1;mark[begin.first][begin.second] = 5;mark[end.first][end.second] = 6;test.dfs(begin,end);for (int i = 0; i < Max + 1; i++) {for (int j = 0; j < Max + 1; j++) {switch (mark[i][j]) {case 1:cout << "↑ "; break;case 2:cout << "↓ "; break;case 3:cout << "← "; break;case 4:cout << "→ "; break;case 5:cout << "起 "; break;case 6:cout << "終 "; break;}}cout << endl;}}

寫的確實有點啰嗦了,四個if直接暴露了我編程新手的現實。這里沒有增加障礙物,當然也并不麻煩,只需要提前把障礙物的點的map設為1即可。

A star 算法

這是在視頻里面看到的,據視頻所說這是最常見的算法,它比廣度優先高級的地方在于增加了一個花費(感覺有點像貪心算法)把當前花費加上預估花費作為判斷隊列出隊的條件,花費少的先出隊。這可以幫助我們盡快找到最短路徑。其實也就是把廣度優先算法中的隊列換成優先隊列即可,代碼以后再補充吧。

這里貼出視頻網址https://www.bilibili.com/video/BV1bv411y79P。

總結

以上是生活随笔為你收集整理的从(0,0)到(n,n)——广度优先及其改进的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 婷婷激情在线 | 帮我拍拍漫画全集免费观看 | 不卡视频一区二区三区 | 99精品视频在线免费观看 | 少妇人妻偷人精品视频蜜桃 | 色撸撸在线视频 | 国产sm在线 | 日本人妻熟妇久久久久久 | 国产黄片毛片 | 一本色道久久hezyo无码 | 久久久亚洲精品无码 | 免费国产黄色片 | 操韩国美女 | 婷色 | 成人福利视频网站 | 一区二区国产在线观看 | 性折磨bdsm欧美激情另类 | 四虎影酷 | 午夜视频入口 | 中文字幕丰满乱子伦无码专区 | 蜜桃久久av | 精品国产高清在线观看 | 在线看片一区二区 | 操操操爽爽爽 | 边吃奶边添下面好爽 | 三年中文在线观看中文版 | wwwwww国产| 美女av在线免费观看 | 欧美激情中文字幕 | 操亚洲女人 | 精品国产人妻一区二区三区 | 色无极亚洲影院 | 污网在线看 | 国产视频网站在线观看 | 男人的天堂国产 | 男人日女人网站 | 日本午夜一区 | 在线免费看污视频 | 超碰xxx| 激情小视频 | 国内自拍视频在线观看 | 19禁大尺度做爰无遮挡电影 | 性开放耄耋老妇hd | 免费高清成人 | 久久综合影院 | 午夜精品久久久久久久久久久 | 国产精品美女主播 | 久久91| 亚洲无码精品国产 | 成人日韩av| 一本大道av伊人久久综合 | 亚洲成人中文字幕在线 | 日韩午夜激情视频 | 日本免费一区二区三区视频 | 国产欧美一区二区精品性色 | 男女视频在线观看 | 在线免费黄色网址 | 亚洲女优在线观看 | 手机av在线看 | 69精品一区二区三区 | 国产精品69久久久久 | 自拍偷拍第2页 | 丝袜中文字幕 | 老司机午夜免费精品视频 | 爱情岛论坛永久入址测速 | 欧美日韩国产在线一区 | 日韩精品在线观看免费 | 男人天堂手机在线观看 | av大全在线播放 | 成人娱乐网 | 国产视频色| 欧美日韩另类在线 | 黑人巨大精品欧美一区免费视频 | 黄色xxxx | 成人激情在线观看 | 欧美狠狠爱 | 91精品国产综合久久精品 | 国产婷婷色一区二区三区 | 在线观看的免费 | 伊人av综合| 天天摸天天插 | 免费性情网站 | 免费看黄色片视频 | 欧美一二三区在线观看 | 亚洲男人天堂2020 | 午夜视频免费 | 日韩激情在线视频 | 尤物一区二区 | 亚洲一级黄色大片 | 中文av网站 | 亚洲成人手机在线 | 特级做a爰片毛片免费69 | 玖玖玖视频 | 日日夜夜国产 | 欧美三级免费观看 | 538精品一线 | 夜夜草网站 | 亚洲福利专区 | 久久这里有精品 |