肯定是函数出问题了,用别人的函数就过了,但我没想明白哪里错了
by SakurajiamaMai @ 2023-05-14 22:02:42
题目中魔板初始是“12348765”,所以A函数中的 swap(s[i+4],s[i]); 应改成 swap(s[7-i],s[i]);
by xzy_caiji @ 2023-07-03 15:46:51
@[SakurajiamaMai](/user/784813)
by xzy_caiji @ 2023-09-24 11:28:21
@[dfdf_xuziye](/user/939580) 佬改了一下还是不对
by SakurajiamaMai @ 2023-09-24 13:28:49
emm让我看一下
by xzy_caiji @ 2023-09-24 15:41:59
```cpp
#include<bits/stdc++.h>
using namespace std;
string zz;map<string,string>mp;queue<string>que;
void A(string s){
string tmp=s;
for(int i=0;i<4;i++)swap(s[i],s[7-i]);
if(mp.count(s)==0)que.push(s),mp[s]=mp[tmp]+'A';
}
void B(string s){
string tmp=s;
s[0]=tmp[3],s[1]=tmp[0],s[2]=tmp[1],s[3]=tmp[2],s[4]=tmp[5],s[5]=tmp[6],s[6]=tmp[7],s[7]=tmp[4];
if(mp.count(s)==0)que.push(s),mp[s]=mp[tmp]+'B';
}
void C(string s){
string tmp=s;
s[1]=tmp[6],s[2]=tmp[1],s[5]=tmp[2],s[6]=tmp[5];
if(mp.count(s)==0)que.push(s),mp[s]=mp[tmp]+'C';
}
int main(){
for(int i=0;i<8;i++){
char ch;
cin>>ch;
zz+=ch;getchar();
}
que.push("12345678");
mp["12345678"]="";
while(!que.empty()){
A(que.front());B(que.front());C(que.front());
if(mp.count(zz)!=0){
cout<<mp[zz].size()<<endl<<mp[zz];
return 0;
}
que.pop();
}
return 0;
}
```
这是我的代码,可以参考一下(您的我还在调) @[SakurajiamaMai](/user/784813)
by xzy_caiji @ 2023-09-24 15:53:27