12分求调
查看原帖
12分求调
1063127
yechenguo楼主2024/7/8 09:47
#include<bits/stdc++.h>
using namespace std;
int a[10][10];
struct node{
	int b[10][10],cnt;
	char d[10001];
}c,e,f,g;
void bfs()
{
	queue<node>q;
	for(int i=1;i<=2;i++)
		for(int j=1;j<=4;j++)
			c.b[i][j]=a[i][j];
	c.cnt=0;
	q.push(c);
	while(!q.empty())
	{
		c=q.front();
		q.pop();
		if(c.b[1][1]==1&&c.b[1][2]==2&&c.b[1][3]==3&&c.b[1][4]==4&&c.b[2][1]==8&&c.b[2][2]==7&&c.b[2][3]==6&&c.b[2][4]==5)
		{
			cout<<c.cnt<<endl;
			for(int i=1;i<=c.cnt;i++) cout<<c.d[i];
			return;
		}
		for(int i=1;i<=2;i++)
			for(int j=1;j<=4;j++)
				e.b[i][j]=c.b[abs(i-3)][j];
		e.cnt=c.cnt+1;
		for(int i=1;i<e.cnt;i++) e.d[i]=c.d[i];
		e.d[e.cnt]='A';
		q.push(e);
		f.b[1][1]=c.b[1][4];
		f.b[2][1]=c.b[2][4];
		for(int i=1;i<=2;i++)
			for(int j=2;j<=4;j++)
				f.b[i][j]=c.b[i][j-1];
		f.cnt=c.cnt+1;
		for(int i=1;i<f.cnt;i++) f.d[i]=c.d[i];
		f.d[f.cnt]='B';
		q.push(f);
		g.b[1][1]=c.b[1][1];
		g.b[2][1]=c.b[2][1];
		g.b[1][2]=c.b[2][2];
		g.b[2][2]=c.b[2][3];
		g.b[1][3]=c.b[1][2];
		g.b[2][3]=c.b[1][3];
		g.b[1][4]=c.b[1][4];
		g.b[2][4]=c.b[2][4];
		g.cnt=c.cnt+1;
		for(int i=1;i<g.cnt;i++) g.d[i]=c.d[i];
		g.d[g.cnt]='C';
		q.push(g);
	}
}
int main()
{
	cin>>a[1][1]>>a[1][2]>>a[1][3]>>a[1][4]>>a[2][4]>>a[2][3]>>a[2][2]>>a[2][1];
	bfs();
	return 0;
}
2024/7/8 09:47
加载中...