并没过样例也不知道哪里错了
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<cstdio>
using namespace std;
struct node{
string shu,daan;
int sum=0;
};
int t1,t2;
string aha,a,jc;
map<string,int> m;
queue<node> q;
int sum;
void A(){
for(int i=0;i<=6;i++){
if(i%2==0){
t1=a[i];
//cout<<a[i]<<" ";
a[i]=a[i+8];
a[i+8]=t1;
//cout<<a[i+8]<<" ";
}
}
}
void B(){
t1=a[6];
t2=a[14];
for(int i=4;i>=0;i--){
if(i%2==0){
a[i+2]=a[i];
}
}
a[0]=t1;
for(int i=12;i>=8;i--){
if(i%2==0){
a[i+2]=a[i];
}
}
a[8]=t2;
}
void C(){
t1=a[4];
a[4]=a[2];
a[2]=a[10];
a[10]=a[12];
a[12]=t1;
}
node dfs(){
m[aha]=1;
node j;
j.shu=aha;
q.push(j);
while(!q.empty()){
node t;
t=q.front();
q.pop();
cout<<"giao"<<t.shu<<endl;
int flag=0;
for(int i=0;i<=14;i++){
if(jc[i]!=t.shu[i]){
flag=1;
break;
}
}
if(flag==0){
node fanhui;
fanhui.daan=t.daan;
fanhui.sum=t.sum;
return fanhui;
}
a=t.shu;
A();
node ab;
ab.sum=t.sum+1;
if(m[a]==0){
ab.shu=a;
ab.daan=t.daan+'A';
q.push(ab);
m[a]=1;
}
a=t.shu;
B();
if(m[a]==0){
//cout<<"giao"<<t.sum;
ab.shu=a;
ab.daan=t.daan+'B';
q.push(ab);
m[a]=1;
}
a=t.shu;
C();
if(m[a]==0){
ab.shu=a;
ab.daan=t.daan+'C';
q.push(ab);
m[a]=1;
}
}
}
int main(){
getline(cin,aha);//从0开始
int hh=49;
for(int i=0;i<=14;i++){
if(i%2==0){
jc[i]=hh;
hh++;
}else{
jc[i]=' ';
}
}
hh=56;
for(int i=8;i<=14;i++){
if(i%2==0){
jc[i]=hh;
hh--;
}else{
jc[i]=' ';
}
}
//for(int i=0;i<=14;i++){
// cout<<jc[i];
//}
node zhong;
zhong=dfs();
cout<<zhong.sum<<endl;
cout<<zhong.daan;
return 0;
}