#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string strs[7];
bool filled[7],flag;
char maps[4][4];
void fillin(int line,int str) {
for(int i=1;i<=3;i++)
maps[line][i]=(char)(strs[str][i-1]);
}
bool equal(string x,char y[]) {
for(int i=0;i<3;i++) if(x[i]!=y[i]) return false;
return true;
}
bool check(int row) {
char tmp[4];
if(row==4) flag=true;
for(int i=1;i<=3;i++)
tmp[i-1]=maps[i][row];
for(int i=1;i<=6;i++)
if(equal(strs[i],tmp)&&!filled[i])
check(row+1);
if(flag) return true;
else return false;
}
void dfs(int line) {
if(line==4) {
if(check(1)) {
for(int i=1;i<=3;i++) {
for(int j=1;j<=3;j++)
printf("%c",maps[i][j]);
printf("\n");
}
exit(0);
}
else return;
}
else {
for(int i=1;i<=6;i++) {
if(!filled[i]) {
fillin(line,i);
filled[i]=true;
dfs(line+1);
filled[i]=false;
}
}
}
}
int main() {
memset(maps,0,sizeof(maps));
memset(filled,false,sizeof(filled));
for(int i=1;i<=6;i++) cin>>strs[i];
dfs(1);
printf("0");
return 0;
}
样例过了,WA 4个点