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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组

發(fā)布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

解題思路:
這題如果我們考慮蚱蜢跳,有很多蚱蜢,有很多情況,所以我們讓空盤跳,這樣就簡化題目了,然后我們化圓為直,將題目的情況看成字符串012345678,最后要變成087654321,這樣題目就變得跟[藍橋杯2017初賽]青蛙跳杯子
一樣了,唯一的區(qū)別就是這個是個圓,所以在012345678這個字符串中,0往左跳會跳到8的位置,故需要用環(huán)形數(shù)組,我們用map存儲字符串來標記。

關鍵點:
1.關于環(huán)形的數(shù)組,前移動和后移動可能會溢出下標。解決方法是,轉移后的坐標公式為
(原坐標+改變量+數(shù)組長度)%數(shù)組長度
2.map標記,圓盤在跳。

代碼如下:

#include <iostream> #include <queue> #include <map> #include <cstring> using namespace std; string a, b; int len; int dian;//(原坐標+改變量+數(shù)組長度)%數(shù)組長度 int dx[] = {1, -1, 2, -2};struct node {string str;int dian;int step;node(string str1, int dian1, int step1) {str = str1;dian = dian1;step = step1;} };int bfs() {map<string, int> st;queue<node>q;q.push(node(a, dian, 0));st[a] = 1;while (q.size()) {node t = q.front();q.pop();if (t.str == b) {return t.step;}for (int i = 0; i < 4; i++) {int dianf = (t.dian + dx[i] + len) % len;//環(huán)形數(shù)組if (dianf < 0 || dianf >= len)continue;string strf = t.str;char hhh = strf[t.dian];strf[t.dian] = strf[dianf];strf[dianf] = hhh;if (st.count(strf) == 0) {q.push(node(strf, dianf, t.step + 1));st[strf] = 1;}}}}int main() {a = "012345678";b = "087654321";len = a.length();dian = 0;//0在a中的位置cout << bfs() << endl;return 0; } #include <iostream> #include <queue> #include <cstring> #include <map> using namespace std; string a = "012345678"; string b = "087654321";struct node {string s;int dian;int p; };int dx[] = {1, -1, 2, -2};void bfs(node start) {queue<node>q;map<string, int>mp;q.push(start);mp[start.s] = 1;while (q.size()) {node t = q.front();q.pop();if (t.s == b) {cout << t.p << endl;return ;}for (int i = 0; i < 4; i++) {int dians = (t.dian + dx[i] + 9) % 9;if (dians < 0 || dians >= 9 )continue;string ss = t.s;char hh = ss[t.dian];ss[t.dian] = ss[dians];ss[dians] = hh;if (mp.count(ss) == 0) {mp[ss]= 1;q.push({ss, dians, t.p + 1});}}} }int main() {node start = {a, 0, 0};bfs(start);return 0; }

總結

以上是生活随笔為你收集整理的[蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看免费观看 | 久久美| 精品丰满人妻无套内射 | 伊人动漫 | 丨国产丨调教丨91丨 | 国产午夜视频 | 99色热| 本道久久 | 久久婷香 | 日本四级电影 | 男男av网站 | 精品少妇久久久久久888优播 | 亚洲第一网站 | 在线看中文字幕 | 亚洲天堂av线 | 九一精品一区 | videosex抽搐痉挛高潮 | 怡红院院av| 成人一级影视 | 久久国产a | 欧美一级性片 | 久久久久久爱 | 亚洲专区在线 | 熟睡侵犯の奶水授乳在线 | 成人免费av片 | 91网在线 | 色呦在线| 一久久久 | 老熟妇仑乱视频一区二区 | 黄色美女毛片 | 久久久精品美女 | 欧美另类色 | 蜜桃麻豆视频 | 韩国电影大尺度在线观看 | 欧美一级一区二区 | 妺妺窝人体色www婷婷 | 伊人久久大香线蕉 | 少妇久久久久久被弄高潮 | 欧美老熟妇一区二区 | 狂野欧美性猛交免费视频 | 欧美一级淫片aaaaaa | 干操网| 欧美a在线观看 | 亚洲97视频 | 五月天六月婷婷 | 大陆明星乱淫(高h)小说 | 男女男精品视频站 | 女仆裸体打屁屁羞羞免费 | 91九色网站| 日韩激情第一页 | 四虎影院免费 | 日本丰满少妇裸体自慰 | 伊人一区二区三区 | 一区二区三区国产 | 黄色免费看视频 | 丁香花电影免费播放电影 | 悠悠色综合| 国产自偷自拍视频 | 奇米影视欧美 | 国产做爰免费观看视频 | 91啪在线| 麻豆理论片 | 91porny丨首页入口在线 | 国产免费一区二区三区在线观看 | 一本一道波多野结衣一区二区 | 无码精品国产一区二区三区 | 手机看片亚洲 | www.亚洲免费 | 一区二区三区 中文字幕 | 男男做爰猛烈叫床爽爽小说 | 国产激情图片 | 精彩毛片 | 成人h片在线观看 | 亚洲男人天堂2023 | 女人久久久 | 潘金莲一级淫片aaaaaa播放 | 久草精品在线观看 | 青青99 | 久久久久久久久久久av | 69xx视频在线观看 | 日本三级中文字幕在线观看 | jizz免费| 奇米色影视 | 九九热在线免费观看 | 奇米888一区二区三区 | 日本不卡视频在线 | 男人都懂的网址 | 一区二区三区在线观 | 亚洲好骚综合 | 黑帮大佬和我的三百六十五天 | 无码精品视频一区二区三区 | 国产sm调教视频 | 国产精品第七页 | 国产剧情在线视频 | 免费黄色在线看 | 黄色3级视频 | 国产伦精品一区二区三区视频我 | 午夜精品福利影院 | 夜色伊人 |