求助,样例都没过
查看原帖
求助,样例都没过
1192073
yjy_echo楼主2024/7/9 21:14
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
char c;
int t;
queue<string> q;
string s,sa,sb,sc,ns; 
map<string,string> mp;
string move_A(string now){
	string a="",b=""; 
	for(int i=0;i<4;i++) a+=now[i];
	for(int i=4;i<8;i++) b+=now[i];
	now=b+a;
	return now;
}
string move_B(string now){
	char a=' ',b=' ';
	a=now[3],b=now[7];
	for(int i=7;i>=0;i--) now[i+1]=now[i];
	now[0]=a,now[4]=b;
	return now;
}
string move_C(string now){
	swap(now[1],now[2]);
	swap(now[5],now[6]);
	swap(now[1],now[6]);
	return now;
}
int main(){
	while(cin>>c) s+=c;
	cout<<s<<endl;
	q.push("12345678");
	while(!q.empty()){
		ns=q.front(),sa=move_A(ns),sb=move_B(ns),sc=move_C(ns),q.pop();
		//cout<<ns<<' '<<sa<<' '<<sb<<' '<<sc<<endl;
		if(!mp[s].empty()){
			cout<<mp[s].size()<<endl<<mp[s];
			return 0;
		}
		if(mp[sa].empty()){
			q.push(sa);
			mp[sa]=mp[ns]+"A";
		}
		if(mp[sb].empty()){
			q.push(sb);
			mp[sb]=mp[ns]+"B";
		} 
		if(mp[sc].empty()){
			q.push(sc);
			mp[sc]=mp[ns]+"C";
		}
	}
	return 0;
}
2024/7/9 21:14
加载中...