亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bfs.cpp

?? 寬度優先算法解決八碼難題
?? CPP
字號:
#include<iostream>
#include<stdio.h>
#define N 3              //九宮二維數組大小
#define M 100000         //closed表的大小,可進行設置

using namespace std;


class jgnode{
public:
	int value[N][N];                 //記錄九宮各位置的值
	int num[2];                      //記錄0的位置
	jgnode *pre;                  //指向父輩節點的指針
	jgnode *next;                 //open表中連接后面節點的指針
	jgnode():pre(NULL)            //默認構造函數
	{}

	jgnode(const int v[N][N],jgnode *p=NULL){//構造函數初始化
		for(int i=0;i<N;i++)
			for(int j=0;j<N;j++)
				value[i][j]=v[i][j];
		pre=p;
	}
	jgnode(const int v[N][N],jgnode *p=NULL,int n[2]=0){
		for(int i=0;i<N;i++)
			for(int j=0;j<N;j++)
				value[i][j]=v[i][j];
		pre=p;
		num[0]=n[0];
		num[1]=n[1];
		next=NULL;
	}

	void print(){                     //輸出九宮
		for(int i=0;i<N;i++){
			for(int j=0;j<N;j++)
				cout<<value[i][j]<<"  ";
			cout<<endl;}
		cout<<endl;
	}
	int isequal(int v[N][N]){         //判斷輸入是否與本節點相等
		for(int i=0;i<N;i++)
			for(int j=0;j<N;j++)
				if(value[i][j]!=v[i][j])
					return -1;
		return 0;
	}

};

void findzero(int tv[N][N],int tn[2]);
int expand(jgnode *h,jgnode *t,jgnode *g);
int isgnode(jgnode *t,jgnode *g,int tv[N][N]);
int printnode(jgnode *g,int c);
void evalue(jgnode *t,int tv[N][N]);
int expnode(jgnode *h,jgnode *t,int tv[N][N],int tn[2]);

int main(){
	int vs[N][N]={1,2,3,4,0,5,6,7,8},vg[N][N]={0,1,2,3,4,5,6,7,8},vt[N][N],tnum[2]={0,0};
/*	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			vg[i][j]=vs[2-i][2-j];*/
	char cho='n';
do{	int ecount=1,ocount=0,ccount=0,j=0,temp=0,counter=0;
	//ecount記錄open表末端,ocount記錄open表始端,ccount記錄closed表末端
	jgnode *head=NULL,*end=NULL,*closed[M]={NULL};
	jgnode *snode=NULL,*gnode=NULL,*tnode=NULL,*tt=NULL;
	//snode為開時節點,gnode為目標節點,tnode為寄存節點
	
	cout<<"出入開始節點(如1,2,3,4,0,5,6,7,8):"<<endl;
	for(int m=0;m<N;m++)
		for(int n=0;n<N;n++)
			cin>>vs[m][n];
	findzero(vs,tnum);
	cout<<tnum[0]<<tnum[1]<<endl;
	snode=new jgnode(vs,NULL,tnum);
/*	cout<<"出入目標節點(如0,1,2,3,4,5,6,7,8):"<<endl;
	for(m=0;m<N;m++)
		for(int n=0;n<N;n++)
			cin>>vg[m][n];*/
	gnode=new jgnode(vg,NULL,tnum);
	cout<<"開始節點:"<<endl;
	snode->print();
	cout<<"目標節點:"<<endl;
	gnode->print();
	head=snode;end=head;tt=head;
	cout<<"start:"<<endl;
	if(snode->isequal(vg)==0){
		cout<<"find with th snode."<<endl;
		return 0;
	}
	ecount=expand(head,snode,gnode);
//	while(tt!=NULL){
//		tt->print();
//		tt=tt->next;
//	}
	tt=head;
	if(ecount==-1)
		return 0;
	while(j++<M){
		if(head->next==NULL)
			break;
		tnode=head->next;
		head->next=tnode->next;
		evalue(tnode,vt);
		while(closed[counter]!=NULL){
			if(closed[counter++]->isequal(vt)==0){
				temp=1;break;}
		}
		if(temp==0){
		closed[ccount++]=tnode;
		ecount=expand(head,tnode,gnode);
		if(ecount==-1)
			break;
		}
		temp=0;counter=0;
/*		while(tt!=NULL){
		tt->print();
		tt=tt->next;
		}
	    tt=head;*/
	}
	cout<<"擴展次數為:  "<<j<<endl;
/*	int ccc=0;
	while(closed[ccc]!=NULL){
		closed[ccc++]->print();
	}
	while(head!=NULL){
		head->print();
		head=head->next;
	}*/
	j=0;
	cout<<"是否繼續下一次搜索(y or n):"<<endl;
	cin>>cho;
	}while((cho=='y')||(cho=='Y'));
	return 0;
}
int printnode(jgnode *g,int c){
	int cc=c;
	if((g->pre)!=NULL)
		cc=printnode(g->pre,c+1);
	g->print();
	return cc;
}
int isgnode(jgnode *t,jgnode *g,int tv[N][N]){
	int count=0;
	if(g->isequal(tv)==0){
		g->pre=t;
		cout<<"find the goal node!!"<<endl;
		cout<<"搜索路徑如下:"<<endl;
		count=printnode(g,count);
		cout<<"路徑長度:"<<count<<endl;
		return -1;
	}
	return 0;
}
int expnode(jgnode *h,jgnode *t,int tv[N][N],int tn[2]){
	jgnode *temp,*p=h;
	if((t->pre)!=NULL){
		if(((t->pre)->isequal(tv))!=0){
			temp=new jgnode(tv,t,tn);
			temp->pre=t;
			while(p->next!=NULL)
				p=p->next;
			p->next=temp;
			temp=NULL;
			return 1;
		}
		else return 0;
	}
	else{
		temp=new jgnode(tv,t,tn);
		temp->pre=t;
		while(p->next!=NULL)
			p=p->next;
		p->next=temp;
		temp=NULL;
		return 1;
	}
}
//擴展當前節點,并判斷是否為目標
int expand(jgnode *h,jgnode *t,jgnode *g){
	int td=0,ti,tj,tv[N][N],tn[2],ct=0,flag=0;
	ti=t->num[0];tj=t->num[1];
    if((ti-1)>=0){
		evalue(t,tv);
		tn[0]=ti-1;tn[1]=tj;
		td=tv[ti-1][tj];tv[ti-1][tj]=tv[ti][tj];tv[ti][tj]=td;
		if(isgnode(t,g,tv)==-1)
			return -1;
		expnode(h,t,tv,tn);
	}
    if((tj+1)<=2){
		evalue(t,tv);
		tn[0]=ti;tn[1]=tj+1;
		td=tv[ti][tj+1];tv[ti][tj+1]=tv[ti][tj];tv[ti][tj]=td;
		if(isgnode(t,g,tv)==-1)
			return -1;
		expnode(h,t,tv,tn);
	}
    if((ti+1)<=2){
		evalue(t,tv);
		tn[0]=ti+1;tn[1]=tj;
		td=tv[ti+1][tj];tv[ti+1][tj]=tv[ti][tj];tv[ti][tj]=td;
		if(isgnode(t,g,tv)==-1)
			return -1;
		expnode(h,t,tv,tn);
	}
    if((tj-1)>=0){
		evalue(t,tv);
		tn[0]=ti;tn[1]=tj-1;
		td=tv[ti][tj-1];tv[ti][tj-1]=tv[ti][tj];tv[ti][tj]=td;
		if(isgnode(t,g,tv)==-1)
			return -1;
		expnode(h,t,tv,tn);
	}
	return 0;
}
void evalue(jgnode *t,int tv[N][N]){
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			tv[i][j]=t->value[i][j];
}

void findzero(int tv[N][N],int tn[2]){
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++){
			if(tv[i][j]==0){tn[0]=i;tn[1]=j;}
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看一区二区三区| 精品制服美女丁香| 免费在线观看成人| 奇米在线7777在线精品| 91免费观看国产| 欧美韩国日本不卡| 成人午夜视频福利| 国产精品色婷婷久久58| 国产一区二区精品在线观看| 精品久久久三级丝袜| 黄色日韩三级电影| 欧美日韩在线亚洲一区蜜芽| 日韩精品一二三区| www欧美成人18+| 91亚洲精品一区二区乱码| 日韩一区二区在线看片| 最新国产の精品合集bt伙计| 97成人超碰视| 青青草原综合久久大伊人精品| 欧美一级夜夜爽| 奇米精品一区二区三区在线观看一| 成人激情免费电影网址| 亚洲国产视频一区二区| 91精品欧美福利在线观看| 国产精品一区二区免费不卡| 伊人开心综合网| 久久久久久久久一| 欧美三级在线视频| 蜜臀av一区二区三区| 国产精品免费人成网站| 91麻豆精品国产91久久久更新时间| 日韩精品视频网站| 亚洲美女视频在线| 日韩欧美一级二级三级| 97超碰欧美中文字幕| 精品午夜一区二区三区在线观看| 最新国产成人在线观看| 久久精品夜夜夜夜久久| 久久久久久久电影| 欧美日韩电影在线播放| 日本丶国产丶欧美色综合| 九九精品视频在线看| 中文字幕欧美日韩一区| 欧美二区乱c少妇| 日韩av电影天堂| 日本一二三四高清不卡| 久久久国际精品| 精品福利一区二区三区免费视频| 久久精品99国产国产精| 日韩精品一二区| 六月丁香综合在线视频| 精品一区二区三区久久| 美脚の诱脚舐め脚责91| 国产麻豆视频一区| 成人激情免费网站| 91成人免费在线| 这里只有精品视频在线观看| 欧美另类一区二区三区| 色香色香欲天天天影视综合网 | 色噜噜狠狠成人网p站| 91久久奴性调教| 欧美一二区视频| 中文字幕一区二区不卡| 欧美不卡激情三级在线观看| 国产视频一区二区三区在线观看| 亚洲国产三级在线| 一区二区三区色| 久久精品久久99精品久久| aaa亚洲精品一二三区| jlzzjlzz欧美大全| 成人国产亚洲欧美成人综合网| 亚洲精品videosex极品| 国产 欧美在线| 亚洲欧美一区二区久久| 在线一区二区观看| 国产成a人亚洲精品| 一区二区三区**美女毛片| 91精品国产91久久久久久最新毛片| 国产精品综合网| 日韩主播视频在线| 亚洲图片另类小说| 久久一夜天堂av一区二区三区| 色综合视频在线观看| 国产美女在线观看一区| 香蕉成人啪国产精品视频综合网| 日韩免费性生活视频播放| 成人激情动漫在线观看| 亚洲国产成人91porn| 国产亚洲美州欧州综合国| 色成人在线视频| 国产成人在线影院| 国产伦精品一区二区三区在线观看| 亚洲国产精品一区二区久久恐怖片| 欧美大白屁股肥臀xxxxxx| 欧美日韩一区二区三区不卡 | 秋霞国产午夜精品免费视频| 亚洲欧美国产高清| 亚洲丝袜自拍清纯另类| 亚洲欧美一区二区在线观看| 精品粉嫩超白一线天av| 欧美精品一区二区久久婷婷| 欧美一区二区国产| 91精品蜜臀在线一区尤物| 在线观看视频欧美| 欧美日韩你懂得| 精品国产免费人成在线观看| 欧美一级高清大全免费观看| 日韩美女在线视频| 国产亚洲精品7777| 亚洲专区一二三| 亚洲女人的天堂| 成人av电影在线观看| 亚洲国产日韩一区二区| 亚洲精品欧美激情| 视频一区视频二区在线观看| 五月婷婷欧美视频| 国产精品一二三区在线| 成人午夜电影网站| a美女胸又www黄视频久久| 夫妻av一区二区| 不卡一卡二卡三乱码免费网站| 福利91精品一区二区三区| 色综合天天综合| 欧美电影免费观看高清完整版在| 国产精品久久久久久久久免费桃花| 亚洲综合另类小说| 国产成人精品一区二区三区四区 | 亚洲午夜精品在线| 日韩高清不卡在线| 成人av综合一区| 国产91高潮流白浆在线麻豆| 精品一区二区三区在线观看国产| 欧美日韩国产电影| 亚洲成人激情自拍| 欧美日韩精品一区二区三区| 亚洲午夜在线观看视频在线| 欧美性受xxxx| 日本怡春院一区二区| 69久久夜色精品国产69蝌蚪网| 五月婷婷久久综合| 欧美一区二区女人| 国内精品不卡在线| 国产精品久久久久久久久快鸭| 色婷婷综合久久久中文一区二区| 一区二区三区欧美在线观看| 91久久精品网| 国产麻豆午夜三级精品| 国产精品九色蝌蚪自拍| 777精品伊人久久久久大香线蕉| 视频在线观看一区二区三区| 久久精品夜夜夜夜久久| 在线看国产一区二区| 国内久久精品视频| 亚洲综合激情另类小说区| 亚洲精品一区二区三区蜜桃下载| 91小视频在线| 国产一区二区不卡老阿姨| 亚洲一二三区视频在线观看| 国产夜色精品一区二区av| 欧美三级在线看| 91久久精品一区二区| 成人午夜精品在线| 理论电影国产精品| 奇米精品一区二区三区在线观看 | 国产成人精品影院| 日韩电影网1区2区| 亚洲动漫第一页| 亚洲国产视频网站| 亚洲欧洲综合另类| 亚洲日本电影在线| 欧美韩国日本不卡| 欧美激情艳妇裸体舞| 精品福利一二区| 欧美大度的电影原声| 欧美亚州韩日在线看免费版国语版| 97久久人人超碰| 国产经典欧美精品| 成人高清视频在线| 91免费国产在线观看| 高清日韩电视剧大全免费| 成人黄色一级视频| av在线一区二区三区| 91九色02白丝porn| 欧美精品丝袜久久久中文字幕| 欧美日韩情趣电影| 欧美一区二区三区视频免费播放| 777xxx欧美| 日韩欧美一级二级三级| 久久久电影一区二区三区| 国产精品乱码久久久久久| 国产69精品久久99不卡| 性感美女久久精品| 国产麻豆日韩欧美久久| 成人免费视频免费观看| 欧美性xxxxxxxx| 久久综合久久综合久久| 亚洲欧美国产77777| 日本免费在线视频不卡一不卡二| 亚洲精选一二三| 韩国精品免费视频|