求助
查看原帖
求助
494992
underline__jian楼主2021/12/6 20:51
#include<iostream>
#include<cstdio>
#include<queue>
#include<map>
using namespace std;
string en,c;
int dd[3][8]={{7,6,5,4,3,2,1,0},{3,0,1,2,5,6,7,4},{0,6,1,3,4,2,5,7}};
char tu[4]={'A','B','C'};
queue<pair<string,string> >q;
map<string,int>mp;
string calc(string s,int id){
	string ans=s;
	for(int i=0;i<8;i++) ans[i]=s[dd[id][i]];
	return ans;
}
void bfs(){
	q.push(make_pair("12345678",""));
	string s,ts,wy,twy;
	while(q.size()){
		s=q.front().first;
		wy=q.front().second;
		q.pop();
		if(s==en){
			cout<<wy.size()<<"\n"<<wy;
			break;
		}
		for(int i=0;i<3;i++){
			ts=calc(s,i);

			mp[ts]=1;
			twy=wy+tu[i];
			q.push(make_pair(ts,twy));
		}
	}
}
signed main(){
	for(int i=1;i<9;i++){
		cin>>c;
		en+=c;
	}
	bfs();
	return 0;
}

TLE后四个点

2021/12/6 20:51
加载中...