亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

八數(shù)碼問題 【隱式圖bfs】

2019-11-11 05:10:59
字體:
供稿:網(wǎng)友

題目:八數(shù)碼問題。

題意:編號(hào)為1~8的8個(gè)正方形滑塊被擺成3行3列(有一個(gè)格子留空), 每次可以把與空格相鄰的滑塊(有公共邊才算相鄰)移到空格中,而它原來的位置就成為了新的空格。 給定初始局面和目標(biāo)局面(用0表示空格),你的任務(wù)是計(jì)算出最少的移動(dòng)步數(shù)。 如果無法到達(dá)目標(biāo)局面,則輸出-1。

思路:用bfs搜索0的位置,每變換一次0,就會(huì)得到一個(gè)新局面,每個(gè)局面有8次變換。再每次變換時(shí)記錄變換步數(shù)。

參考:入門經(jīng)典-八數(shù)碼問題 - P199

代碼:

bfs:

int bfs(){    init_lookup_table();//初始化查找表    int frontt = 1,rear = 2;    while(frontt < rear){        State& s = st[frontt];        if(memcmp(goal,s,sizeof(s)) == 0) return frontt;//找到目標(biāo)        int z;        for(z=0;z<9;z++) if(!s[z]) break;//找到0位置        int x = z/3,y = z%3;//獲取行和列        for(int d=0;d<4;d++){            int newx = x + dx[d];            int newy = y + dy[d];            int newz = newx * 3 + newy;//新的0位置            if(newx >= 0 && newx < 3 && newy >= 0 && newy < 3){                State& t = st[rear];//指向隊(duì)尾,準(zhǔn)備將新序列入隊(duì)                memcpy(&t,&s,sizeof(s));//將當(dāng)前序列復(fù)制到t                t[newz] = s[z];//交換0位置                t[z] = s[newz];                dist[rear] = dist[frontt] + 1;//步數(shù)在隊(duì)首的基礎(chǔ)上加一                if(try_to_insert(rear)) rear++;//判重,不重復(fù)隊(duì)尾加一            }        }        frontt++;//出隊(duì)    }return 0;//沒有找到}int main(){    for(int i=0;i<9;i++) scanf("%d",&st[1][i]);    for(int i=0;i<9;i++) scanf("%d",&goal[i]);    int ans = bfs();    if(ans > 0) PRintf("%d/n",dist[ans]);    else printf("-1/n");    return 0;}其中init_lookup_table()和try_to_insert(rear)是判重函數(shù):

這里提供3種方法:

(1)編碼解碼法:把0~8的全排列和0~362879的整數(shù)一一對(duì)應(yīng)起來。思路:將序列上對(duì)應(yīng)的位置的階乘 * 此位置之后小于本數(shù)的個(gè)數(shù)

比如:876543210   8! *8 + 7!*7 + ... + 0!*0

代碼:

int vis[362880],fact[9];void init_lookup_table(){    fact[0] = 1;    for(int i=1;i<9;i++) fact[i] = fact[i-1] * i;//1~8的階乘}int try_to_insert(int s){    int code = 0;    for(int i=0;i<9;i++){        int cnt = 0;        for(int j=i+1;j<9;j++) if(st[s][j] < st[s][i]) cnt++;        code += fact[8-i] * cnt;//當(dāng)前序列是遞增序的第幾個(gè)    }    if(vis[code]) return 0;    return vis[code] = 1;}(2)哈希法: 只需要設(shè)計(jì)一個(gè)所謂的哈希函數(shù)h(x),然后將任意結(jié)點(diǎn)x映射到某個(gè)給定范 圍 [ 0 , M-1]的整數(shù)即可

判重:建立鏈表,將哈希函數(shù)得到的位置進(jìn)行鏈表查詢,沒有找到說明不重,插入鏈表。

代碼:

const int hashsize = 1000003;int head[hashsize],next[maxstate];void init_lookup_table(){memset(head,0,sizeof(head));}int hashfun(State& s){    int v = 0;    for(int i=0;i<9;i++) v = v*10 + s[i];//將9個(gè)數(shù)字合成9位數(shù)    return v % hashsize;//確保hash函數(shù)值是不超過hash表的大小的非負(fù)整數(shù)}int try_to_insert(int s){    int h = hashfun(st[s]);    int u = head[h];    while(u){        if(memcmp(st[u],st[s],sizeof(st[s])) == 0) return 0;        u = next[u];    }    next[s] = head[h];//插入鏈表中    head[h] = s;    return 1;}(3)轉(zhuǎn)換數(shù)字法:直接將9個(gè)數(shù)轉(zhuǎn)換成一個(gè)9位數(shù),然后利用set集合判重即可。

代碼:

set<int>vis;void init_lookup_table(){vis.clear();}int try_to_insert(int s){    int v = 0;    for(int i=0;i<9;i++) v = v*10 + st[s][i];    if(vis.count(v)) return 0;    vis.insert(v);    return 1;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
在线日韩影院| 丰满岳妇乱一区二区三区| 麻豆md0077饥渴少妇| 国产精品日日摸夜夜爽| 青青草精品在线视频| 十八禁一区二区三区| 自拍av一区二区三区| 丁香花在线观看完整版电影| 好吊操这里只有精品| 亚洲一区视频在线观看视频| 香蕉久久夜色精品国产更新时间| 俄罗斯黄色录像| 久久久久久夜| 春色校园综合激情亚洲| 国产精品xxxav免费视频| 亚洲国产成人精品女人久久久| 成人精品免费网站| www高清在线视频日韩欧美| 欧美v亚洲v综合ⅴ国产v| 在线免费激情视频| 深夜福利成人| 精品欠久久久中文字幕加勒比| 99视频国产精品免费观看| 欧美国产综合在线| 99精品国产99久久久久久白柏| 亚洲欧美中文在线视频| 亚洲精品久久久中文字幕| 日韩和的一区二在线| 国产午夜精品一区二区| 美女福利视频网| 久久精品99久久久香蕉| 午夜激情视频在线观看| 日韩a∨精品日韩在线观看| 免费精品视频在线| 国产a视频免费观看| 大尺度一区二区| 尤物视频在线看| h网在线观看| 国产91精品一区二区麻豆亚洲| 日韩精品一区二区三区四区五区| 国产探花一区在线观看| 日韩免费在线观看视频| 超清福利视频| 9色精品在线| 国产熟妇久久777777| 欧美日韩一区二区电影| 在线免费看黄色片| 久久99国产精品久久99大师| 欧美性黄网官网| 精品国产区一区二区三区在线观看| 亚洲欧美激情视频| 国产精品久久久久久一区二区| 日本中文字幕精品| 在线观看视频你懂得| 成人网ww555视频免费看| 国产麻豆精品在线观看| 99在线欧洲视频| 91久久精品日日躁夜夜躁国产| 国产精品网站在线看| 深夜黄色小视频| 国产精品外国| 日韩三级视频在线播放| 欧美性videosxxxxx| 天天看天天操| 欧美亚洲成人xxx| 欧美视频在线观看网站| 拍拍拍999自拍偷| 国产亚洲成av人片在线观看桃| 婷婷色综合网| 竹内纱里奈兽皇系列在线观看| 精品无码人妻一区二区三区品| 日本www在线| 国模吧精品视频| 色先锋av资源中文字幕| 亚洲精品无码专区在线播放| 精品人妻伦九区久久aaa片| 国产suv精品一区二区6| 性久久久久久久久久久久| 手机看片一区二区| 搡老熟女老女人一区二区| 羞羞的视频在线| 亚洲人人夜夜澡人人爽| 久久免费看少妇高潮| 午夜国产在线| 艳母动漫在线看| 国产高清视频免费| 怡红院成永久免费人全部视频| 香蕉视频xxx| 国产高潮流白浆喷水视频| 中文字幕一区二区人妻电影丶| 国产精品白丝一区二区三区| 91综合精品国产丝袜长腿久久| 亚洲精品喷潮一区二区三区| 不卡毛片在线看| 国产成人无码一区二区在线播放| 久久久午夜精品理论片中文字幕| 国产精品伦子伦免费视频| 老司机精品福利在线观看| 色噜噜狠狠一区二区| 亚洲第一福利在线观看| 欧美激情一区二区三区免费观看| 国产欧美 在线欧美| 视频欧美精品| 美女喷白浆视频| 天堂中文在线观看视频| 波多野结衣日韩| 欧美精品久久久久久久小说| 丰满人妻一区二区三区53视频| 久久美女视频| 蜜桃一区av| av久久网站| 99人久久精品视频最新地址| 国产a级一级片| 日本精品在线视频| 国产精品videossex久久发布| 高清视频在线观看三级| 丰满熟女人妻一区二区三| 国产精品视频入口| 999久久久国产| 日本一区二区三不卡| 免费在线看污| 成人性免费视频| 一区三区视频| 日本高清免费电影一区| 国产视频三级在线观看播放| 蜜臀精品一区二区三区| 婷婷激情综合| 欧美极品少妇xxxxx| 不卡免费追剧大全电视剧网站| 18video性欧美19sex高清| 欧美a极品极品欧美| 日韩欧美亚洲另类| 一区二区三区四区国产精品| 久久只有精品| 国产在线视频欧美一区| 日本黄大片在线观看| 国产精品99久久久久久www| 成人午夜电影在线观看| 日本一区二区久久| 国产精品国产馆在线真实露脸| 成人美女大片| 伊人久久综合网另类网站| 国产精品成人观看视频免费| 国外亚洲成av人片在线观看| 久久在线视频精品| 欧美日韩国产丝袜另类| 国产丝袜美腿一区二区三区| 国产精品99久久久久久董美香| 国产一区二区网站| 欧性猛交ⅹxxx乱大交| 国产午夜精品理论片a级大结局| 校园激情久久| 午夜精品一区二区三区视频免费看| 日韩成人一区二区三区| 日本韩国欧美在线观看| 日韩美女在线看| 爱啪视频在线观看视频免费| www男人的天堂| 亚洲另类黄色| 亚洲一区二区三区四区中文字幕| 国产综合欧美在线看| 国产成人无码a区在线观看视频| 男同在线观看| 久久天堂电影网| 国产精选久久| 99国产超薄肉色丝袜交足的后果| h短视频大全在线观看| 国产成人一区二区三区影院在线| t66y最新发布地址| 在线精品一区二区三区| 欧美黑人性受xxxx精品| 伊人资源视频在线| 麻豆精品免费视频| 欧美啪啪小视频| 亚洲aⅴ天堂av在线电影软件| 亚洲欧美日韩国产| 1区2区3区在线视频| av电影中文字幕| 欧美日韩国产91| 91在线国产观看| 成年人在线免费观看| 久草在线资源网站| 狠狠躁夜夜躁av无码中文幕| 黑人无套内谢中国美女| 国产99久久久久久免费看农村| 国产在线观看精品一区二区三区| 久草热在线观看| 免费h视频网站| 日韩av网站在线| 亚洲欧美一区在线| 中文字幕一区二区三区精彩视频| 天天爱天天做色综合| 91九色国产社区在线观看| 神马香蕉久久| 欧美在线观看一二区| 在线播放精品视频| 青青草国产精品视频| 欧美色图久久| 中国人与牲禽动交精品| 在线免费精品视频| 日本高清视频在线| 精品久久美女| 亚洲av少妇一区二区在线观看| 亚洲精品98久久久久久中文字幕| 制服丝袜综合日韩欧美| 欧美三级韩国三级日本一级| 国产裸体美女永久免费无遮挡| 成人久久久久久久| 迷人的保姆韩国| 96日本xxxxxⅹxxx17| 久久天天躁日日躁| 日韩精品看片| 成人免费观看视频| 欧美乱大交做爰xxxⅹ性3| 国产精品国产三级国产专业不| 欧美精品一区在线播放| 国精品一区二区| 国产精品久久欧美久久一区| 中文字幕亚洲电影| 欧美激情久久久久久| 国产成人三级视频| 亚洲最新视频在线| 超碰在线超碰在线| 久久久精品视频国产| 午夜性色一区二区三区免费视频| 91产国在线观看动作片喷水| 午夜精品久久99蜜桃的功能介绍| 亚洲国产三级| 黄页视频在线播放| 在线成人av电影| 麻豆国产欧美日韩综合精品二区| 美腿丝袜亚洲综合| 午夜精品久久久久99热蜜桃导演| 老司机很黄的视频免费| 污污网站在线看| 国产一区二区三区高清播放| 91麻豆精品国产91久久综合| 毛片.com| 国产午夜精品久久| 国产精品 欧美精品| 99久久精品国产毛片| 亚洲激情视频一区| 午夜精品电影| 亚洲综合精品一区二区| 亚洲av无码一区二区三区性色| 一本大道香蕉久在线播放29| 日韩av成人在线| 91精品人妻一区二区三区蜜桃2| 成人在线网站| 57pao国产一区二区| 国产成人精品aa毛片| 日本女优北野望在线电影| 国产精品熟女视频| 999久久久免费精品国产牛牛| 亚洲图片小说综合| 成人激情免费在线| 亚洲成av人综合在线观看| 亚洲色图综合久久| 奇米网人体黄视频| 天天操天天干视频| 波多野结衣久久| 国产精品久久久久久久av福利| 国产不卡精品一区二区三区| 国产精选一区二区三区| 亚洲天天综合| 九一成人免费视频| 国产suv精品一区二区三区| 秋霞av亚洲一区二区三| 国产一区二区三区久久精品| 日本激情视频网站| 污片在线免费看| 一区二区三区免费观看| 欧美二区在线播放| 超薄肉色丝袜足j调教99| aa视频在线播放| 亚洲国产日韩在线一区模特| 欧美xxxxbbbb在线播放| 夜夜躁狠狠躁日日躁av| 在线观看美女av| 超碰97在线人人| 免费一级全黄少妇性色生活片| 国产成人精品av在线| 免费在线中文字幕| 国产成人无码一二三区视频| 国产女18毛片多18精品| 影音先锋成人资源网站| 性欧美大胆高清视频| 久久久久亚洲AV成人网人人小说| 欧美久久婷婷综合色| 亚洲一区二区三区四区五区中文| 国产精品91视频| av成人手机在线| 日本精品久久久久| 国产一级揄自揄精品视频| 最新高清无码专区| 欧美一区,二区| 日韩美女免费线视频| 不卡的国产精品| 久久这里有精品15一区二区三区| 精品视频亚洲| 亚洲一区二区三区黄色| 亚洲国产精一区二区三区性色| 国产视频亚洲| 亚洲人成影院在线| www国产免费| 乱一区二区三区在线播放| 日韩在线免费观看av| 国精产品一区一区三区免费视频| 国产夜色精品一区二区av| 91国拍精品国产粉嫩亚洲一区| 亚洲天堂av高清| 久久久久亚洲综合| 成人动漫视频在线观看免费| 国产精品久久久久一区二区三区共| 免费在线黄网站| 日本一级二级视频| 久久93精品国产91久久综合| 操喷在线视频| 26uuu亚洲| 亚洲欧美激情在线视频| 国产精品国产三级国产传播| 深夜福利视频一区二区| avtt天堂在线| 亚洲精品美女久久久| 亚洲毛片在线观看.| 欧美综合天天夜夜久久| 一区二区三区韩国| 成人www视频网站免费观看|