⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack1.h

📁 人工智能中的八数码问题:附有详细的注释 我们可以将八数码问题看成移动空格的问题.在不断的移动空格过程当中不断改变棋盘的布局,使之到达目标状态. 用一个open表(本程序采用序栈)的节点,从中选
💻 H
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
const  int maxsize=10000;
const int size=4;
int size1=3;
struct  node{
	int precost;
	 int nextcost;
	   int pos;
	     int ch1[size*size];
		   int pre;
		     int id;
			 void show(){
				 for(int i=0;i<size1*size1;i++)
				 {
					 cout<<ch1[i]<<"  ";
					  if((i+1)%size1==0)
						  cout<<endl;
				 }
			 }
};
node  arr[maxsize];
int chbak[size*size],ch[size*size],chdes[size*size];
class   stack
{
private:
	node *data[maxsize];
	 int top;
public:
	stack(){top=0;}
	int getsize(){return top;}
	void insert(node *elem)//有序插入,open表的插入
	{
		if(top>=maxsize)
		{
			cout<<"stack flow!"<<endl;
			 exit(0);
		}
		else
		{
			int flag=top;
			 while(flag>0&&(elem->precost+elem->nextcost)>(data[flag-1]->precost+data[flag-1]->nextcost))
			 {
				 data[flag]=data[flag-1];
				 flag--;
			 }
			 data[flag]=elem;
			   top++;
		}
	}
	void insert1(node *elem)//closed表插入
	{
		if(top>=maxsize)
		{
			cout<<"stack flow!"<<endl;
			 exit(0);
		}
		else
		{
			 data[top]=elem;
			   top++;
		}
	}
	node *del()
	{
		if(top<=0)
		{
			cout<<"stack is empty!"<<endl;
			exit(0);
		}
		else
		{
			node *temp=data[top-1];
			top--;
			 return temp;
		}
	}
	int isempty()
	{
		return top<=0;
	}
	int cmp(node *node1)//比较状态
	{
		for(int i=0;i<top;i++)
		{
			int flag=1;
			 for(int j=0;j<size1*size1;j++)
			   if(node1->ch1[j]!=data[i]->ch1[j])
			   {
				   flag=0;
			     break;
			   }
			   if(flag)
				   return 1;
		}
		return 0;
	}
  void clear()
  {
	  top=0;
  }
};
void author()
{
	char  lwq[50]="挒洑邼嗊憸殢娺晫曄褪哌=!1O8@哌*:*'/?";
	 cout<<"              ";
	  for(int i=0;i<int(strlen(lwq));i++)
		  cout<<char(255-int(lwq[i]));
	        cout<<endl;
}
void select()
{
	cout<<"                     请选择你要操作的选项!"<<endl;
	  cout<<"    一:随机方式(按1)    二:手工方式(按2)    三:选择问题规模(按3)"<<endl;
	     cout<<"    四:清屏(按4)                            五:退出(其他"<<endl;
}
int jiecheng(int n)
{
	int sum=1;
	 for(int i=1;i<=n;i++)
		 sum*=n;
	  return sum;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -