求助,一定给您点关注
查看原帖
求助,一定给您点关注
421128
Addrian楼主2022/3/18 21:52

并没过样例也不知道哪里错了

#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;
} 
2022/3/18 21:52
加载中...