RE了,求救
查看原帖
RE了,求救
541411
dream0330楼主2022/10/5 20:11

在线等挺急的。。

#include<bits/stdc++.h>
using namespace std;
map<int,bool>f;
int i,l,r=1,x,xx,xxx,ff;
struct usb{
	int n,sum,pred;
	char c;
}a[500000];
void turn_around(int k)
{
	if(a[k].pred!=-1)turn_around(a[k].pred);
	if(a[k].pred!=-1)cout<<a[k].c;
	return;
}
void ok_print(int x)
{
	cout<<a[x].sum<<endl;
	ff=1;
	turn_around(x);
	cout<<endl;
	return;
}
void f1(int k)
{
	int an=k%10000;
	int bn=k/10000;
	int d=an*10000+bn;
	if(f[d]==1)return;
	f[d]=1;
	r++;
	a[r].pred=l;
	a[r].c='A';
	a[r].n=d;
	a[r].sum=a[l].sum+1;
	if(d==x)ok_print(r);
	return;
}
void f2(int k)
{
	int an=k%10000;
	int bn=k/10000;
	an=an/10+((an%10)*1000);
	bn=bn/10+((bn%10)*1000);
	int d=an*10000+bn;
	if(f[d]==1)return;
	f[d]=1;
	r++;
	a[r].pred=l;
	a[r].c='B';
	a[r].n=d;
	a[r].sum=a[l].sum+1;
	if(d==x)ok_print(r);
	return;
}
void f3(int k)
{
	int aa=k%10,bb=(k%100)/10,cc=(k%1000)/100,dd=(k%10000)/1000,ee=(k%100000)/10000,ff=(k%1000000)/100000,gg=(k%10000000)/1000000,hh=(k%100000000)/10000000;
	int d=aa+ff*10+bb*100+dd*1000+ee*10000+gg*100000+cc*1000000+hh*1000000000;
	if(f[d]==1)return;
	f[d]=1;
	r++;
	a[r].pred=l;
	a[r].c='C';
	a[r].n=d;
	a[r].sum=a[l].sum+1;
	if(d==x)ok_print(r);
	return;
}
int main()
{
	for(int i=1;i<=8;i++)
	{
		cin>>xx;
		xxx=xxx*10+xx;
	}
	x=xxx/10000;
	xxx%=10000;
	x=x*10000+(xxx%10*1000)+(xxx%100/10*100)+(xxx/100%10*10)+(xxx/1000);
	if(x==12348765){cout<<0<<endl;return 0;}
	f[12348765]=1;
	a[1].n=12348765;
	a[1].pred=-1;
	while(l!=r)
	{
		l++;
		f1(a[l].n);
		if(ff==1)return 0;
		f2(a[l].n);
		if(ff==1)return 0;
		f3(a[l].n);
		if(ff==1)return 0;
	}
	return 0;
}

记录

2022/10/5 20:11
加载中...