11pts广搜求Hack/yun
查看原帖
11pts广搜求Hack/yun
1248522
mlvx楼主2024/6/8 19:37
#include<bits/stdc++.h>
using namespace std;
struct node{string s,ans;int step;};
string s,now,to;map<string,bool>vis;queue<node>q;
int main(){
	for(int i=1;i<=4;i++)cin>>s,now+=s;
	for(int i=1;i<=4;i++)cin>>s,to+=s;
	vis[now]=1,q.push({now,"",0});
	while(!q.empty()){
		string s=q.front().s,ans=q.front().ans;int step=q.front().step;q.pop();
		if(s==to){
			cout<<step;
			for(int i=0;i<ans.size();i++){
				if(i%4==0)puts("");
				cout<<ans[i];
			}return 0;
		}for(int i=0;i<16;i++)for(int j=i+1;j<16;j++){
			swap(s[i],s[j]);
			if(!vis[s])vis[s]=1,q.push({s,ans+char(i/4+'1')+char((i-1)%4+'2')+char(j/4+'1')+char((j-1)%4+'2'),step+1});
			swap(s[i],s[j]);
		}
	}
}
2024/6/8 19:37
加载中...