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

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

?? main2.cpp

?? 人工智能中的八數碼難題
?? CPP
字號:

//Global constant define

#define MaxStep  500000


#include <math.h>
#include <iostream.h>

//Global varibal define

int iCurrentElement = 1, iStep = 0;
bool bSucceed = false;

struct bsm
{
  int s[3][3];
  int me ;
  int father;
  int level;
  int posX,posY;
}  src[MaxStep],destnation;

void print(bsm dest)
{
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			cout << dest.s[i][j] << "  ";
		cout << '\n';
	}
}

int compare(bsm src,bsm dest)
{
	for(int i=0;i<3 ; i++)
		for(int j=0; j <3 ; j++)
			if (src.s[i][j] != dest.s[i][j])
				return 0;

	return 1;
}


void copy (bsm &src,bsm &dest)
{
	dest.father = src.father;
	dest.level  = src.level;
	dest.posX   = src.posX;
	dest.posY   = src.posY;
	dest.me     = src.me;
	for(int i = 0 ; i < 3 ; i++)
		for(int j = 0 ; j < 3 ; j++)
			dest.s[i][j] = src.s[i][j];
}


int step(bsm temp)
{
	bool exist ;
	for(int i=0;i < 4 ; i++)
	{
		bsm dest;
		copy(temp ,dest);
		int j = ((((i+1) % 2) ? dest.posX :dest.posY) + ((i < 2 ) ? 1 : -1));
		if (j < 0 || j > 2)
		{
			continue;
		}
		else
		{
			exist = false;
			if ((i+1) % 2) 
			{
				dest.s[dest.posX][dest.posY] = dest.s[j][dest.posY];
				dest.s[j][dest.posY] = 0;
				dest.posX = j;
			}
			else
			{
				dest.s[dest.posX][dest.posY] = dest.s[dest.posX][j];
				dest.s[dest.posX][j] = 0;
				dest.posY = j;
			}

			dest.father = dest.me;
			dest.level += 1;
			dest.me     = iCurrentElement;

			for (int i = iCurrentElement ; i >= 0; i--)
			{
				if(compare(dest ,src[i]))
				{
					exist = true;
					break;
				}
			}
			if(exist)
				continue;

			if(iCurrentElement >= MaxStep)
				return 1;

			copy ( dest , src[iCurrentElement] );

			++iCurrentElement;

			if (compare(dest,destnation))
			{
				bSucceed = true;
				break;
			}

		}
	}
}


int Init()
{

	for(int i=0;i<3 ; i++)
	{
		for(int j=0; j <3 ; j++)
		{
			destnation.s[i][j] =  ((( ( i * 3) )  + (j+1) ) % 9 );
			cin >> src[0].s[i][j];
			if (src[0].s[i][j] < 0 || src[0].s[i][j] >8)
			{
				cout <<"Are you kidding? I can only recive the number between(include) 0 and 8! " 
					 << endl;
				return 0;
			}
			if (src[0].s[i][j] == 0)
			{
				src[0].posX = i ;
				src[0].posY = j ;
			}
		}
	}

	destnation.posX   = 2 ;
	destnation.posY   = 2 ;
	destnation.level  = 0 ;
	destnation.father = -1 ;

	src[0].level  = 0 ;
	src[0].father = -1 ;
	src[0].me     = 0  ;

	for(int k = 1 ; k < MaxStep ; k++)
		src[k].father = -2 ;

    iCurrentElement = 1;
	iStep = 0;
    bSucceed = false;


	return 1;
		
}

void layout(int myself)
{


	if(src[myself].father != -1) 
		layout(src[myself].father);
	cout << "Step " << ++iStep << ':' << endl;
	print(src[myself]);
/*
	for(int i = 0 ; src[i].father != -2 ; i ++)
	{
		cout << "Step " << i+1 << " :" <<endl;
		print(src[i]);
	}

*/

}


void example()
{

	src[0].s[0][0] = 1;
	src[0].s[0][1] = 2;
	src[0].s[0][2] = 3;
	src[0].s[1][0] = 7;
	src[0].s[1][1] = 4;
	src[0].s[1][2] = 5;
	src[0].s[2][0] = 8;
	src[0].s[2][1] = 0;
	src[0].s[2][2] = 6;
	src[0].level   = 0;
	src[0].father  = -1;
	src[0].me      = 0;
	src[0].posX    = 2;
	src[0].posY    = 1;

	for(int i=0;i<3 ; i++)
		for(int j=0; j <3 ; j++)
			destnation.s[i][j] =  ((( ( i * 3) )  + (j+1) ) % 9 );

	destnation.posX   = 2 ;
	destnation.posY   = 2 ;
	destnation.level  = 0 ;
	destnation.father = -1 ;

	for(int j = 0 ; !bSucceed  && iCurrentElement < MaxStep ; j++)
	{
		step(src[j]);
	}

	if(iCurrentElement == MaxStep)
	{
		cout << "Sorry the stupid programer who designed me didn't give enough space . so , i can't give you the answer!" << endl;
	}
	else
		layout(src[iCurrentElement-1].me);


}

void main()
{

	cout << "     八數碼問題 \n"  << endl << endl << "問題描述:\n";
	cout << "有一個3*3的棋盤,其中有0-8 9個數字,0表示空格,其他的數字可以和0交換位置。" << endl ;
	cout << "求由初始狀態 : \n" << "1  2  3 \n4  5  6\n7  8  0 \n" << "到達目標狀態步數最少的解。\n";
	cout << "輸入方法舉例:\n" << "從鍵盤輸入:\n" << "1 2 3 7 4 5 8 0 6\n" ;
	cout << "則向屏幕輸出:\n";

	example();

	cout << "現在請輸入你的數據:\n";

	if(!Init())
	{
		cout << "I can't initial !";
		return;
	}

	if(compare(src[0],destnation))
	{
		cout << "哥們兒,開玩笑呢,干嘛直接輸入目標狀態!" <<endl;
		return;
	}


	for(int j = 0 ; !bSucceed  && iCurrentElement < MaxStep ; j++)
	{
		step(src[j]);
	}

	if(iCurrentElement == MaxStep)
	{
		cout << "Sorry the stupid programer who designed me didn't give me enough space . so , i can't give you the answer!";
		cout << "even I have compute " << src[iCurrentElement-1].level << "steps!";

	}

	else
		layout(src[iCurrentElement-1].me);

	cout << endl <<"Used " << iCurrentElement - 1 << " array element," << " in " << src[iCurrentElement - 1].level << " steps" <<endl;


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜成人免费视频| 首页国产欧美日韩丝袜| 91精品国产欧美一区二区成人 | 亚洲高清三级视频| 国产精品天干天干在观线| 日韩一区二区三区四区五区六区| 成人福利视频网站| 国产一区二区三区四| 日韩成人精品在线| 亚洲日本一区二区| 欧美国产乱子伦| 久久蜜桃av一区精品变态类天堂| 精品视频999| 色综合久久久久| 成人app网站| 国产 日韩 欧美大片| 黄色资源网久久资源365| 午夜视频久久久久久| 亚洲精品水蜜桃| 日韩久久一区二区| 国产精品国产三级国产专播品爱网| ww亚洲ww在线观看国产| 日韩视频一区二区| 69精品人人人人| 欧美午夜一区二区三区| 91成人免费在线视频| 97成人超碰视| 不卡的电影网站| 粉嫩欧美一区二区三区高清影视| 国产精品88888| 国产黄色精品网站| 国产一区二区调教| 国产成人免费视频网站高清观看视频| www.欧美.com| 成人黄页在线观看| 99久久99久久精品免费观看 | 91精品国产一区二区三区蜜臀 | 91麻豆精品秘密| 一本色道久久加勒比精品 | 欧美喷潮久久久xxxxx| 欧美色图激情小说| 欧美日精品一区视频| 在线不卡欧美精品一区二区三区| 欧美日韩视频第一区| 欧美日韩黄视频| 91精品一区二区三区在线观看| 91精品国产免费| 精品国产凹凸成av人导航| 国产亚洲污的网站| 中文字幕国产一区二区| 亚洲伦在线观看| 亚洲狠狠爱一区二区三区| 爽好多水快深点欧美视频| 麻豆国产91在线播放| 国产精品99久久久久久似苏梦涵 | 亚洲视频1区2区| 亚洲成人中文在线| 美女视频黄a大片欧美| 免费在线看一区| 国产91精品久久久久久久网曝门| www.一区二区| 欧美午夜寂寞影院| 精品日本一线二线三线不卡| 国产清纯美女被跳蛋高潮一区二区久久w| 国产偷国产偷精品高清尤物| 综合av第一页| 日本少妇一区二区| 国产成人av一区| 色狠狠色噜噜噜综合网| 日韩三级视频在线看| 中国色在线观看另类| 亚洲bt欧美bt精品777| 卡一卡二国产精品| av中文一区二区三区| 宅男在线国产精品| 国产精品国产精品国产专区不蜜| 天天综合网 天天综合色| 国产精品一区二区三区99| 91一区二区三区在线播放| 69久久夜色精品国产69蝌蚪网| 欧美精彩视频一区二区三区| 亚洲一区二区av在线| 国产成人一级电影| 欧美人xxxx| 亚洲欧洲日韩女同| 麻豆91免费看| 久久精品人人爽人人爽| 有坂深雪av一区二区精品| 狠狠色狠狠色综合日日91app| av亚洲产国偷v产偷v自拍| 日韩欧美一区二区视频| 综合婷婷亚洲小说| 国产剧情一区在线| 911精品国产一区二区在线| 国产精品乱人伦中文| 久久精品国产网站| 欧美专区日韩专区| 国产欧美va欧美不卡在线| 麻豆久久久久久久| 欧美怡红院视频| 中文字幕亚洲视频| 国产美女娇喘av呻吟久久| 69堂成人精品免费视频| 亚洲精选视频在线| 国产精品亚洲а∨天堂免在线| 欧美精品日日鲁夜夜添| 亚洲精品视频一区二区| 国产91对白在线观看九色| 日韩精品中文字幕一区| 偷窥少妇高潮呻吟av久久免费| 色婷婷综合五月| 国产精品福利在线播放| 国产成人精品免费视频网站| 日韩免费高清视频| 日本亚洲一区二区| 欧美日韩国产一区| 一区二区三区视频在线看| 北岛玲一区二区三区四区| 国产日本欧美一区二区| 国产乱码精品1区2区3区| 精品国产一区二区国模嫣然| 免费不卡在线观看| 日韩欧美中文字幕一区| 热久久国产精品| 欧美美女直播网站| 午夜精品福利久久久| 欧美日本一区二区三区四区| 亚洲制服丝袜av| 欧美日韩视频在线第一区 | 婷婷亚洲久悠悠色悠在线播放| 欧美性感一区二区三区| 夜夜精品浪潮av一区二区三区| 91官网在线观看| 亚洲图片欧美综合| 欧美另类videos死尸| 日韩在线一二三区| 日韩午夜三级在线| 狠狠久久亚洲欧美| 国产欧美日韩视频一区二区 | 91美女片黄在线观看91美女| 国产精品国产三级国产三级人妇| youjizz国产精品| 亚洲精品视频在线看| 欧美三区在线观看| 日本视频在线一区| 久久久国产一区二区三区四区小说| 精品一区二区成人精品| 久久精品一区二区三区不卡牛牛| 国产精品一区二区在线观看网站| 国产精品网站在线观看| 91免费观看视频| 午夜精品久久久久久不卡8050| 777亚洲妇女| 国产精品456露脸| 亚洲色图在线播放| 欧美吞精做爰啪啪高潮| 轻轻草成人在线| 精品国产乱码久久久久久1区2区| 国产精品香蕉一区二区三区| 久久精品国产99久久6| 国产调教视频一区| 在线观看一区二区精品视频| 青青青伊人色综合久久| 国产亲近乱来精品视频| 91久久精品一区二区| 蜜臀精品久久久久久蜜臀| 国产亚洲人成网站| 色播五月激情综合网| 麻豆国产精品视频| 亚洲天堂免费在线观看视频| 欧美日韩性生活| 国产成人精品一区二| 亚洲一区二区三区激情| 久久一夜天堂av一区二区三区 | 久久中文字幕电影| 色视频一区二区| 久久99精品国产麻豆婷婷 | 日本强好片久久久久久aaa| 日本一区二区成人| 欧美日韩国产123区| 懂色av一区二区三区免费看| 亚洲国产婷婷综合在线精品| 国产日产精品一区| 91精品欧美久久久久久动漫| 成人高清视频在线| 久久精品国产99国产精品| 亚洲免费伊人电影| 日韩精品一区二区三区蜜臀 | 日韩精品亚洲专区| 国产精品国产三级国产有无不卡| 日韩一区二区免费高清| 色天天综合色天天久久| 国产传媒欧美日韩成人| 日韩电影在线观看一区| 亚洲欧美国产高清| 国产欧美一区二区精品忘忧草| 欧美日韩国产综合草草| 色综合一区二区三区| 国产成人av电影在线| 蜜桃视频一区二区三区|