悬赏关注,想不明白哪里有问题

P2730 [USACO3.2] 魔板 Magic Squares

肯定是函数出问题了,用别人的函数就过了,但我没想明白哪里错了
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


|