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

📄 eightnum.c

📁 八数码 大家看看就知道了 宽度搜索 怎么非得够20个子呢?
💻 C
字号:
#include <stdio.h>
static int Part[3][3];			/*存储各项的位置*/
static int station1,station2;		/*存储0,1的位置*/
int main()
{
	
	int i,j;
	printf("请输入个位置的数字(空格用0表示)\n");
	printf("从左至右,从上到下依次为:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
			scanf("%d",Part[i][j]);
		printf("\n");
	}
	Find();
	return(0);
}
void Find()
{
	int i,j,midlle=0;
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
		{
			if(Part[i][j]==0)
				station1=i*10+j;
			if(Part[i][j]==1)
				station2=i*10+j;
		}
	stepzero();
}
void stepzero()
{
	if(station2==0)
	{
		switch(station1)
		{
			case 22: Part[2][2]=Part[2][1];
			case 21: Part[2][1]=Part[2][0];
			case 20: Part[2][0]=Part[1][0];
				 Part[1][0]=0;
				 break;	
			case 2:  Part[0][2]=Part[0][1];
			case 1:  Part[0][1]=Part[1][1];
			case 11: Part[1][1]=Part[1][0];
				 Part[1][0]=0;
				 break;
			case 12: Part[1][2]=Part[1][1];
				 Part[1][1]=Part[1][0];
				 Part[1][0]=0;
				 break;
		}
		stepb10();
	}
	else 
	{
	if(station1!=2&&station2!=2)
		switch (station1)
		{
			case 0: stepa00(); break;
			case 1: stepa01(); break;
			case 10: stepa10(); break;
			case 11: stepa11(); break;
			case 12: stepa12(); break;
			case 20: stepa20(); break;
			case 21: stepa21(); break;
			case 22: stepa22(); break;
		}
	     else if (station1==2)		/*0在c处*/
		{
			if(station2==1)
			{
				Part[0][2]=Part[1][2];
				Part[1][2]=0;
				stepa12();
			}
	     		else
			{
				Part[0][2]=Part[0][1];
				Part[0][1]=0;
				stepa01();
			}
		}
		else
		{
			switch(station1)
			{
				case 20: Part[2][0]=Part[2][1];
				case 21: Part[2][1]=Part[2][2];
				case 22: Part[2][2]=Part[1][2];
					 	
				case 01: Part[0][1]=Part[0][0];
				case 00: Part[0][0]=Part[1][0];
				case 10: Part[1][0]=Part[1][1];
				case 11: Part[1][1]=Part[1][2];
					 Part[1][2]=0;
					 break;
			}
			Part[0][2]=Part[0][1];
			Part[1][2]=1;
			Part[0][1]=0;
			stepa01();
		}
	}
}
		
void stepa01()
{
	Part[0][1]=Part[0][0];
	
	Part[0][0]=0;
	stepa00();
	
}
void stepa00()
{
	Part[0][0]=Part[1][0];
	Part[1][0]=0;
	stepa10;
}	
void stepa10()
{
	if(Part[0][0]==1)
		stepb10();
	else
	{
		Part[1][0]=Part[2][0];
		Part[2][0]=0;
		step20();
				
	}
}
void stepa20()
{
	Part[2][0]=Part[2][1];
	Part[2][1]=0;	
	stepa21();	
}
void stepa21()
{
	Part[2][1]=Part[2][2];
	Part[2][2]=0;	
	stepa22();	
}
void stepa22()
{
	Part[2][2]=Part[1][2];
	Part[1][2]=0;	
	stepa12();	
}
void stepa12()
{
	Part[1][2]=Part[1][1];
	Part[1][1]=0;	
	stepa01();	
}
void stepa11()
{
	Part[1][1]=Part[0][1];
	Part[0][1]=0;	
	stepa01();	
}
void stepb10()
{
	Part[1][0]=Part[2][0];
	
	


	Part[2][0]=Part[2][1];
	
	Part[2][1]=Part[2][2];
	

	Part[2][2]=Part[1][2];
	
	Part[1][2]=Part[0][2];
	
	Part[0][2]=Part[0][1];
	Part[0][1]=Part[1][1];
	Part[1][1]=0;
	stepb11();
}
void stepb11()
{
	if (Part[0][1]==2)
		if (Part[0][3]==3)
			stepe10();
		else stepc11();
	else
	{
		Part[1][1]=Part[1][0];
		Part[1][0]=0;
		stepb10();
	}
}
void stepc11()
{
	Part[1][1]=Part[1][0];
	Part[1][0]=0;
	stepc10();
}
void stepc10()
{
	if (Part[1][1]==3)
		stepd10();
	else
	{
		Part[1][0]=Part[2][0];
		Part[2][0]=Part[2][1];
		Part[2][1]=Part[2][1];
		Part[2][2]=Part[1][2];
		Part[1][2]=Part[1][1];	
		stepc11();
	}
}
void stepd10()
{
	Part[1][0]=Part[0][0];
	Part[0][0]=Part[0][1];
	Part[0][1]=Part[1][1];
	Part[1][1]=Part[1][2];
	Part[1][2]=Part[0][2];
	Part[0][2]=Part[0][1];
	Part[0][1]=Part[0][0];
	Part[0][0]=Part[1][0];
	Part[1][0]=0;
	stepe10();
}
void stepe10()
{
	
	if (Part[1][2]==4)
		if (Part[2][2]==5)
			steph11();
		else stepf10();
	else
	{
		Part[1][0]=Part[2][0];
		Part[2][0]=Part[2][1];
		Part[2][1]=Part[2][2];
		Part[2][2]=Part[1][2];
		Part[1][2]=Part[1][1];
		Part[1][1]=0;
		stepe11();
	}
}
void stepe11()
{
	if (Part[1][2]==4)
		if (Part[2][2]==5)
			steph11();
		else stepf10();
	else
	{
		Part[1][1]=Part[1][0];
		stepe10();
	}
}
void stepf11()
{
	Part[1][1]=Part[1][0];
	Part[1][0]=0;
	if (Part[1][1]==5)
		stepg10();
	else
	{
		Part[1][0]=Part[2][0];
		Part[2][0]=Part[2][1];
		Part[2][1]=Part[1][1];
		stepf11();
	}
}
void stepg10()
{
	Part[1][0]=Part[0][0];
	Part[0][0]=Part[0][1];	
	Part[0][1]=Part[0][2];
	Part[0][2]=Part[1][2];
	Part[1][2]=Part[1][1];
	Part[1][1]=Part[2][1];
	Part[2][1]=Part[2][2];
	Part[2][2]=Part[1][2];
	Part[1][2]=Part[0][2];
	Part[0][2]=Part[0][1];
	Part[0][1]=Part[0][0];
	Part[0][0]=Part[1][0];
	Part[1][0]=0;
	steph10();
}
void steph10()
{
	Part[1][0]=Part[2][0];
	Part[2][0]=Part[2][1];
	Part[2][1]=Part[1][1];
	Part[1][1]=0;	
	steph11();
}
void steph11()
{
	if(Part[2][1]==6)
		if(Part[2][0]==7&&Part[10]==8)
			printf("Find Successfully!!!")
		else
			printf("Find Faild!!!")
	else
	{
		Part[1][1]=Part[1][0];
		Part[1][0]=Part[2][0];
		Part[2][0]=Part[2][1];
		Part[2][1]=Part[1][1];
		Part[1][1]=0;
		steph11();
	}
}
		
	

⌨️ 快捷键说明

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