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

📄 bahuanghou.cpp

📁 八数码问题 人工智能实验 C语言实现 图搜索
💻 CPP
字号:
int s[9],close[1000];
bool a[9],b[17],c[17];
long flag=0,flag1=0;
#include<stdio.h>
void main()
{
	void move(int i,int j);
	void close_insert(int s[]);
    void search();
    int k;
	search();
	for(k=0;k<flag-8;k++)
	{if(k%8==0)
	printf("行号: 1 2 3 4 5 6 7 8\n列号:");
	printf("%2d",close[k]);
	if((k+1)%8==0)
		printf("\n\n");}
	printf("总共%d个\n",flag1);
}

void move(int i,int j){
	a[j]=1;b[i+j]=1;c[i-j+9]=1;}

void close_insert(int s[]){
	int i,j=flag;
	for(j,i=1;j<flag+8,i<9;j++,i++)
		close[j]=s[i];}

void search()
{int i,j;
for(i=2;i<=16;i++)
{
	if(i>=2&&i<=9) 
		a[i-1]=1;b[i]=1;c[i]=1;
}
i=1;j=1;
while(i>=1)
{
	while(j<=8)
	{
		if(a[j]&&b[i+j]&&c[i-j+9]) break;
		j++;
	}
	if(j<=8)
	{
		a[j]=0;b[i+j]=0;c[i-j+9]=0;
		s[i]=j;
		if(i==8)
		{
			close_insert(s);flag+=8;
			flag1++;
			move(i,j);
			i=i-1;j=s[i];
			move(i,j);
			j++;
		}
		else
		{
			i++;j=1;
		}
	}
	else
	{i--;
	if(i>=1)
	{j=s[i];
	move(i,j);
	j++;
	}
	}
}
}


⌨️ 快捷键说明

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