MnZn迭代加深又T又WA
查看原帖
MnZn迭代加深又T又WA
1248522
mlvx楼主2024/6/9 10:13

Wa on #7.

#include<bits/stdc++.h>
using namespace std;
const int dx[2]={1,0},dy[2]={0,1};
struct node{int a,b,c,d;}ans[100];
int flag;char c[4][4],to[4][4];
int g(int cnt=0){
	for(int i=0;i<4;i++)for(int j=0;j<4;j++)if(c[i][j]!=to[i][j])cnt++;
	return cnt>>1;
}void print(int step){
	cout<<step<<'\n';
	for(int i=0;i<step;i++)cout<<ans[i].a<<ans[i].b<<ans[i].c<<ans[i].d<<'\n';
	exit(0);
}void dfs(int step,int ms){
	if(step+g()>ms)return;
	if(!g())return print(step);
	for(int i=0;i<4;i++)for(int j=0;j<4;j++)for(int t=0;t<2;t++){
		int tx=i+dx[t],ty=j+dy[t];
		swap(c[i][j],c[tx][ty]);
		ans[step]={i+1,j+1,tx+1,ty+1},dfs(step+1,ms);
		swap(c[i][j],c[tx][ty]);
	}
}int main(){
	for(int i=0;i<4;i++)for(int j=0;j<4;j++)cin>>c[i][j];
	for(int i=0;i<4;i++)for(int j=0;j<4;j++)cin>>to[i][j];
	for(int ms=0;;ms++)dfs(0,ms);
	return 0;
}
2024/6/9 10:13
加载中...