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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 8_num.cpp

?? 解決八數(shù)碼問(wèn)題
?? CPP
字號(hào):
// 8_num.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include <time.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>

static int target[9]={1,2,3,4,5,6,7,8,0};
//class definition
class eight_num
{
private:
	int num[9];
	int not_in_position_num;
	int deapth;
	int eva_function;

public:
	eight_num* parent;
	eight_num* open_pre;

	eight_num(int init_num[9]);
	eight_num(int num1,int num2,int num3,int num4,int num5,int num6,int num7,int num8,int num9)
	{
		num[0]=num1;
		num[1]=num2;
		num[2]=num3;
		num[3]=num4;
		num[4]=num5;
		num[5]=num6;
		num[6]=num7;
		num[7]=num8;
		num[8]=num9;
	}
	eight_num(void)
	{
		for (int i=0;i<9;i++)
			num[i]=i;
	}

	void cul_para(void);

	void get_numbers_to(int other_num[9]);
	int get_nipn(void)
	{return not_in_position_num;}
	int get_deapth(void)
	{return deapth;}
	int get_evafun(void)
	{return eva_function;}
	void set_num(int other_num[9]);

	void show(void);
	
	eight_num& operator=(eight_num&);
	eight_num& operator=(int other_num[9]);
	int operator==(eight_num&);
	int operator==(int other_num[9]);
};

void eight_num::cul_para(void)
{
	int i;
	int temp_nipn;
	for (i=0;i<9;i++)
		if (num[i]!=target[i])
			temp_nipn++;
	not_in_position_num=temp_nipn;
	if (this->parent==NULL)
		deapth=0;
	else
		deapth=this->parent->deapth+1;
	eva_function=not_in_position_num+deapth;
}

eight_num::eight_num(int init_num[9])
{
	for (int i=0;i<9;i++)
		num[i]=init_num[i];
}

void eight_num::show()
{
	cout<<num[0];
	cout<<" ";
	cout<<num[1];
	cout<<" ";
	cout<<num[2];
	cout<<"\n";
	cout<<num[3];
	cout<<" ";
	cout<<num[4];
	cout<<" ";
	cout<<num[5];
	cout<<"\n";
	cout<<num[6];
	cout<<" ";
	cout<<num[7];
	cout<<" ";
	cout<<num[8];
	cout<<"\n";
}

void eight_num::get_numbers_to(int other_num[9])
{
	for (int i=0;i<9;i++)
		other_num[i]=num[i];
}

void eight_num::set_num(int other_num[9])
{
	for (int i=0;i<9;i++)
		num[i]=other_num[i];
}

eight_num& eight_num::operator=(eight_num& another_8num)
{
	for (int i=0;i<9;i++)
		num[i]=another_8num.num[i];
	not_in_position_num=another_8num.not_in_position_num;
	deapth=another_8num.deapth+1;
	eva_function=not_in_position_num+deapth;
	return *this;
}

eight_num& eight_num::operator=(int other_num[9])
{
	for (int i=0;i<9;i++)
		num[i]=other_num[i];
	return *this;
}

int eight_num::operator==(eight_num& another_8num)
{
	int match=1;
	for (int i=0;i<9;i++)
		if(num[i]!=another_8num.num[i])
		{
			match=0;
			break;
		}
	if (match==0)
		return 0;
	else 
		return 1;
}

int eight_num::operator==(int other_num[9])
{
	int match=1;
	for (int i=0;i<9;i++)
		if(num[i]!=other_num[i])
		{
			match=0;
			break;
		}
	if (match==0)
		return 0;
	else 
		return 1;
}

//class definition over
//*************************


//空格向上移
int move_up(int num[9])
{
	for (int i=0;i<9;i++)
		if (num[i]==0)
			break;
	if (i<3)
		return 0;
	else
	{
		num[i]=num[i-3];
		num[i-3]=0;
		return 1;
	}
}

//空格向下移
int move_down(int num[9])
{
	for (int i=0;i<9;i++)
		if (num[i]==0)
			break;
	if (i>5)
		return 0;
	else
	{
		num[i]=num[i+3];
		num[i+3]=0;
		return 1;
	}
}
//空格向左移
int move_left(int num[9])
{
	for (int i=0;i<9;i++)
		if (num[i]==0)
			break;
	if (i==0||i==3||i==6)
		return 0;
	else
	{
		num[i]=num[i-1];
		num[i-1]=0;
		return 1;
	}
}
//空格向右移
int move_right(int num[9])
{
	for (int i=0;i<9;i++)
		if (num[i]==0)
			break;
	if (i==2||i==5||i==8)
		return 0;
	else
	{
		num[i]=num[i+1];
		num[i+1]=0;
		return 1;
	}
}

//判斷可否解出
int icansolve(int num[9],int target[9])
{
	int i,j;
	int count_num,count_target;
	for (i=0;i<9;i++)
		for (j=0;j<i;j++)
		{
			if(num[j]<num[i]&&num[j]!=0)
				count_num++;
			if(target[j]<target[i]&&target[j]!=0)
				count_target++;
		}
	count_num=count_num-2*(count_num/2);
	count_target=count_target-2*(count_target/2);
	if ((count_num==1&&count_target==1)||(count_num==0&&count_target==0))
		return 1;
	else
		return 0;
}

//判斷有無(wú)重復(fù)
int existed(int num[9],eight_num *where)
{
	eight_num *p;
	for(p=where;p!=NULL;p=p->parent)
		if(*p==num)
			return 1;
	return 0;
}

//主函數(shù)開(kāi)始
int main(void)
{
	int max_step=30;
	double  time;   
	clock_t Start,Finish;
	int memery_used=0,step=0;
	int num[9];
	int flag=0;//是否輸入錯(cuò)誤標(biāo)志,1表示輸入錯(cuò)誤
	int bingo=0;//是否查找成功標(biāo)志,1表示成功
	int new_flag=0;//是否有新節(jié)點(diǎn)生成,1表示有
	int i,j;
	cout<<"Please input the number(0 for the blank):\n";
	for (i=0;i<9;i++)
	{
		flag=0;
		cin>>num[i];
		for(j=0;j<i;j++)
			if(num[i]==num[j])
				flag=1;
		if (num[i]<0||num[i]>8||flag==1)
		{
			i--;
			cout<<"Illegle number!\tReinput!\n";
		}
	}
	cout<<"Do you want to modify the target(Y/N)?";
	char input;
	cin>>input;
	if (input=='y'||input=='Y')
	{
		cout<<"\nPlease input the new target:\n";
		for (i=0;i<9;i++)
		{
			flag=0;
			cin>>target[i];
			for(j=0;j<i;j++)
				if(target[i]==target[j])
					flag=1;
			if (target[i]<0||target[i]>8||flag==1)
			{
				i--;
				cout<<"Illegle number!\tReinput!\n";
			}
		}
	}
	eight_num S(num),Target(target);
	S.parent=S.open_pre=NULL;
	S.cul_para();
	memery_used++;
	cout<<"Now the initial numbers are:\n";
	S.show();
	cout<<"And the Target is:\n";
	Target.show();
	
	if(!icansolve(num,target))
	{
		cout<<"No one can solve it!\n";
		cin>>i;
		return 1;
	}

	cout<<"Please input the max step limits:";
	cin>>max_step;

	Start=clock( );

	eight_num *open_tos=&S,*new_8num,*p;
	while(open_tos!=NULL&&bingo!=1)
	{
		if(*open_tos==Target)
		{
			bingo=1;
			break;
		}

		new_flag=0;

		p=open_tos->open_pre;

		if(open_tos->get_deapth()>=max_step)
		{
			open_tos=open_tos->open_pre;
			continue;
		}
		
		open_tos->get_numbers_to(num);
		if(move_up(num)&&!existed(num,open_tos))
		{
			new_8num=new eight_num;
			new_8num->set_num(num);
			new_8num->parent=open_tos;
			new_8num->open_pre=p;
			open_tos->open_pre=NULL;
			new_8num->cul_para();
			memery_used++;
			new_flag=1;
			p=new_8num;
		}
		open_tos->get_numbers_to(num);
		if(move_down(num)&&!existed(num,open_tos))
		{
			new_8num=new eight_num;
			new_8num->set_num(num);
			new_8num->parent=open_tos;
			new_8num->open_pre=p;
			open_tos->open_pre=NULL;
			new_8num->cul_para();
			memery_used++;
			new_flag=1;
			p=new_8num;
		}
		open_tos->get_numbers_to(num);
		if(move_left(num)&&!existed(num,open_tos))
		{
			new_8num=new eight_num;
			new_8num->set_num(num);
			new_8num->parent=open_tos;
			new_8num->open_pre=p;
			open_tos->open_pre=NULL;
			new_8num->cul_para();
			memery_used++;
			new_flag=1;
			p=new_8num;
		}
		open_tos->get_numbers_to(num);
		if(move_right(num)&&!existed(num,open_tos))
		{
			new_8num=new eight_num;
			new_8num->set_num(num);
			new_8num->parent=open_tos;
			new_8num->open_pre=p;
			open_tos->open_pre=NULL;
			new_8num->cul_para();
			memery_used++;
			new_flag=1;
			p=new_8num;
		}
		
		if(new_flag=1)
			open_tos=new_8num;
		else
			open_tos=open_tos->open_pre;
	}

	Finish=clock( ); 

	if(bingo==1)
	{
		time = (double)(Finish-Start)*1000/CLOCKS_PER_SEC;
		eight_num *p;
		for (p=open_tos->parent;p!=NULL;p=p->parent)
		{
			cout<<"  ^\n";
			p->show();
			step++;
		}

		cout<<"Time cost:";
		cout<<time;
		cout<<"ms\n";
		cout<<"Memery cost:";
		cout<<memery_used;
		cout<<"blocks\n";
		cout<<"Totaly covered steps:";
		cout<<step;
		cout<<"\n";
	}
	else
		cout<<"Fail to find!";
	
	cin>>i;
	return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区波多野结衣在线观看| 亚洲专区一二三| 欧美日韩午夜在线| 成人激情av网| 久久爱www久久做| 亚洲综合免费观看高清完整版在线| 精品国产制服丝袜高跟| 欧美日韩在线播| 91在线视频播放| 国产精品资源在线观看| 日韩高清在线电影| 一区二区三区影院| 国产精品第四页| 久久日韩精品一区二区五区| 欧美日韩成人激情| 91麻豆精东视频| 成人av在线一区二区三区| 久久99精品久久久久久国产越南 | 国产精品久久久久影视| 日韩欧美黄色影院| 欧美精品一卡二卡| 欧美亚洲精品一区| 91久久精品一区二区| 成人听书哪个软件好| 国产精品亚洲成人| 国产一区在线不卡| 国产一区二区美女| 精品亚洲成av人在线观看| 美日韩一区二区| 免费一级片91| 蜜臀av在线播放一区二区三区| 日日嗨av一区二区三区四区| 亚洲成av人片一区二区| 亚洲一区二区精品久久av| 亚洲精品久久久久久国产精华液| 亚洲色图在线视频| ●精品国产综合乱码久久久久| 中文字幕第一区第二区| 国产精品欧美一级免费| 中文字幕中文字幕在线一区 | 又紧又大又爽精品一区二区| 国产精品丝袜91| 成人免费一区二区三区在线观看| 136国产福利精品导航| 亚洲精品少妇30p| 一区av在线播放| 图片区小说区国产精品视频 | 99久久777色| 在线视频一区二区三区| 欧美三级视频在线观看| 欧美一二三区精品| 久久青草国产手机看片福利盒子 | 国产精品三级久久久久三级| 国产精品私人自拍| 亚洲黄色性网站| 天天综合色天天| 韩国一区二区视频| 国产福利精品导航| 色综合欧美在线视频区| 亚洲欧洲日韩在线| 亚洲色图.com| 日本伊人精品一区二区三区观看方式| 日韩成人一级片| 国产精品一区2区| 99久久er热在这里只有精品66| 在线欧美日韩国产| 欧美一区二区视频在线观看2022| 精品国产sm最大网站| 国产精品乱码久久久久久| 亚洲成人午夜电影| 国产精品综合久久| 在线免费一区三区| 日韩视频免费观看高清完整版在线观看| 久久久精品日韩欧美| 亚洲女女做受ⅹxx高潮| 老司机免费视频一区二区三区| 成人在线视频首页| 在线电影欧美成精品| 久久精品人人做| 亚洲国产精品一区二区www在线 | 国产精品午夜电影| 视频一区视频二区中文| 丁香啪啪综合成人亚洲小说| 欧美午夜片在线观看| 精品区一区二区| 一区二区三区在线观看网站| 国产麻豆一精品一av一免费| 在线免费观看日韩欧美| 久久婷婷国产综合精品青草| 亚洲高清在线视频| 不卡一区在线观看| 精品久久久网站| 亚洲va欧美va国产va天堂影院| 懂色av一区二区三区免费看| 欧美精品123区| 亚洲视频 欧洲视频| 国产一区二区三区免费| 欧美日韩国产色站一区二区三区| 国产精品三级视频| 精品一区二区久久久| 欧美三级视频在线播放| 中文字幕一区二区三区av| 狠狠狠色丁香婷婷综合激情| 777色狠狠一区二区三区| 亚洲精品免费在线观看| 国产成人精品免费网站| 精品精品欲导航| 日韩影院精彩在线| 91福利小视频| 亚洲欧美日韩系列| 成人深夜在线观看| 国产日韩欧美制服另类| 精品一二三四区| 欧美精品1区2区3区| 亚洲国产日韩综合久久精品| 色一情一伦一子一伦一区| 国产精品久久久久久亚洲毛片 | 欧美日韩一二区| 亚洲欧美日韩在线不卡| 99久久综合狠狠综合久久| 国产拍揄自揄精品视频麻豆| 国内精品免费在线观看| 精品国产精品网麻豆系列 | 国产美女av一区二区三区| 欧美一级片在线观看| 亚洲狠狠爱一区二区三区| 欧美在线观看你懂的| √…a在线天堂一区| 99久久精品99国产精品| 中文字幕制服丝袜成人av| 成人精品视频.| 亚洲素人一区二区| 91女人视频在线观看| 亚洲人亚洲人成电影网站色| 99免费精品视频| 伊人色综合久久天天人手人婷| 日本高清视频一区二区| 亚洲一区二区在线播放相泽 | 中文幕一区二区三区久久蜜桃| 精东粉嫩av免费一区二区三区| 日韩视频一区二区三区| 激情综合网最新| 久久九九99视频| 懂色av噜噜一区二区三区av| 中文字幕一区二区在线观看| 一本久久a久久免费精品不卡| 一区二区三区四区激情| 欧美日韩视频在线一区二区| 天堂va蜜桃一区二区三区漫画版| 日韩一区二区麻豆国产| 国产伦理精品不卡| 日韩美女视频一区二区| 欧美性感一区二区三区| 秋霞午夜鲁丝一区二区老狼| 2019国产精品| 91小视频在线| 天天影视色香欲综合网老头| 精品三级av在线| 99久久精品国产导航| 亚洲成人精品一区| 欧美大尺度电影在线| 成人av在线播放网址| 亚洲一区二区欧美日韩| 日韩精品一区二区三区四区视频 | 日韩精品一区二区在线| 风间由美中文字幕在线看视频国产欧美| 国产精品久线在线观看| 欧美日韩在线不卡| 国内精品不卡在线| 亚洲精品少妇30p| 日韩精品在线看片z| av电影一区二区| 午夜国产精品一区| 国产视频视频一区| 欧美日韩极品在线观看一区| 国产一区二区三区不卡在线观看 | 欧美唯美清纯偷拍| 国产精品一区二区x88av| 亚洲午夜影视影院在线观看| 久久天天做天天爱综合色| 欧美性生活影院| 国产成人av自拍| 日韩福利电影在线| 中文字幕欧美一| 日韩网站在线看片你懂的| 色综合久久久久综合体桃花网| 美女一区二区视频| 亚洲精品乱码久久久久久| 久久综合狠狠综合| 欧美年轻男男videosbes| 成人av在线影院| 国产又粗又猛又爽又黄91精品| 亚洲一区二区三区视频在线 | 一区二区欧美精品| 久久丝袜美腿综合| 91麻豆精品国产91久久久久| 97久久精品人人做人人爽| 国产美女精品一区二区三区| 日韩电影在线一区二区三区| 亚洲人123区|