考古
#include #include #include #include
using namespace std;
char id(int x){ return (char)(x+'A'-1); }
int gi(){ char x=getchar(); while(x!='.'&&(x>'Z'||x<'A')) x=getchar(); return x=='.'?0:(int)(x-'A'+1); }
int a[16][16],ti; bool in[15];
int get(){ for(int i=1;i<=10;i++){ for(int j=1;j<=i;j++) if(a[j][i]==0){ return j*100+i; } } }
bool ok(){ for(int o=1;o<=12;o++) if(in[o]==false) return false; return true; }
void init(){ memset(a,-1,sizeof(a)); memset(in,0,sizeof(in)); for(int i=1;i<=10;i++){ for(int j=1;j<=i;j++){ a[j][i]=gi(); in[a[j][i]]=true; } } for(int i=1;i<=10;i++){ for(int j=1;j<=i;j++){ if(a[j][i]==-1) { a[j][i]=0; } } } }
void print(){
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
cout<<id(a[j][i]);
}
cout<<endl;
}
}
void dfs(){ ti++;
if(ti>=3000000){
printf("No solution");
exit(0);
}
if(ok()) {
print();
exit(0);
}
int zt=get();
int px=zt/100;
int py=zt%10;
if(py==0) py=10;
//A:4cases
if(!in[1]){
if(a[px+1][py]==0&&a[px][py+1]==0){
a[px][py]=1;
a[px+1][py]=1;
a[px][py+1]=1;
in[1]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px][py+1]=0;
in[1]=false;
}
if(a[px][py+1]==0&&a[px+1][py+1]==0){
a[px][py]=1;
a[px][py+1]=1;
a[px+1][py+1]=1;
in[1]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
in[1]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0){
a[px][py]=1;
a[px][py+1]=1;
a[px-1][py+1]=1;
in[1]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
in[1]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0){
a[px][py]=1;
a[px+1][py]=1;
a[px+1][py+1]=1;
in[1]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
in[1]=false;
}
}
//B:2cases
if(!in[2]){
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px+3][py]==0){
a[px][py]=2;
a[px+1][py]=2;
a[px+2][py]=2;
a[px+3][py]=2;
in[2]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px+3][py]=0;
in[2]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0){
a[px][py]=2;
a[px][py+1]=2;
a[px][py+2]=2;
a[px][py+3]=2;
in[2]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
in[2]=false;
}
}
//C:8cases
if(!in[3]){
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px][py+1]==0){
a[px][py]=3;
a[px+1][py]=3;
a[px+2][py]=3;
a[px][py+1]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px][py+1]=0;
in[3]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+1][py+2]==0){
a[px][py]=3;
a[px+1][py]=3;
a[px+1][py+1]=3;
a[px+1][py+2]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+1][py+2]=0;
in[3]=false;
}
if(a[px+1][py]==0&&a[px][py+1]==0&&a[px][py+2]==0) {
a[px][py]=3;
a[px+1][py]=3;
a[px][py+1]=3;
a[px][py+2]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
in[3]=false;
}
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px+2][py+1]==0){
a[px][py]=3;
a[px+2][py]=3;
a[px+2][py+1]=3;
a[px+1][py]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px+2][py]=0;
a[px+2][py+1]=0;
a[px+1][py]=0;
in[3]=false;
}
if(a[px+1][py+2]==0&&a[px][py+2]==0&&a[px][py+1]==0){
a[px][py]=3;
a[px+1][py+2]=3;
a[px][py+2]=3;
a[px][py+1]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px+1][py+2]=0;
a[px][py+2]=0;
a[px][py+1]=0;
in[3]=false;
}
if(a[px-1][py+2]==0&&a[px][py+1]==0&&a[px][py+2]==0) {
a[px][py]=3;
a[px-1][py+2]=3;
a[px][py+1]=3;
a[px][py+2]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px-1][py+2]=0;
a[px][py+1]=0;
a[px][py+2]=0;
in[3]=false;
}
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0){
a[px][py]=3;
a[px][py+1]=3;
a[px+1][py+1]=3;
a[px+2][py+1]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
in[3]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-2][py+1]==0){
a[px][py]=3;
a[px][py+1]=3;
a[px-1][py+1]=3;
a[px-2][py+1]=3;
in[3]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
a[px-2][py+1]=0;
in[3]=false;
}
}
//D:1case
if(!in[4]){
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+1][py]==0){
a[px][py]=4;
a[px][py+1]=4;
a[px+1][py+1]=4;
a[px+1][py]=4;
in[4]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+1][py]=0;
in[4]=false;
}
}
//E:4cases
if(!in[5]){
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px][py+1]==0&&a[px][py+2]==0) {
a[px][py]=5;
a[px+1][py]=5;
a[px+2][py]=5;
a[px][py+1]=5;
a[px][py+2]=5;
in[5]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
in[5]=false;
}
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px][py-1]==0&&a[px][py-2]==0) {
a[px][py]=5;
a[px+1][py]=5;
a[px+2][py]=5;
a[px][py-1]=5;
a[px][py-2]=5;
in[5]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px][py-1]=0;
a[px][py-2]=0;
in[5]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px+1][py+2]==0&&a[px+2][py+2]==0){
a[px][py]=5;
a[px][py+1]=5;
a[px][py+2]=5;
a[px+1][py+2]=5;
a[px+2][py+2]=5;
in[5]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px+1][py+2]=0;
a[px+2][py+2]=0;
in[5]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px-1][py+2]==0&&a[px-2][py+2]==0){
a[px][py]=5;
a[px][py+1]=5;
a[px][py+2]=5;
a[px-1][py+2]=5;
a[px-2][py+2]=5;
in[5]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px-1][py+2]=0;
a[px-2][py+2]=0;
in[5]=false;
}
}
//F:8cases
if(!in[6]){
if(a[px-1][py+1]==0&&a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0){
a[px][py]=6;
a[px-1][py+1]=6;
a[px][py+1]=6;
a[px+1][py+1]=6;
a[px+2][py+1]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px-1][py+1]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
in[6]=false;
}
if(a[px-1][py+1]==0&&a[px][py+1]==0&&a[px+1][py+1]==0&&a[px-2][py+1]==0) {
a[px][py]=6;
a[px-1][py+1]=6;
a[px][py+1]=6;
a[px+1][py+1]=6;
a[px-2][py+1]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px-1][py+1]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px-2][py+1]=0;
in[6]=false;
}
if(a[px+1][py+1]==0&&a[px+1][py]==0&&a[px+2][py]==0&&a[px+3][py]==0) {
a[px][py]=6;
a[px+1][py+1]=6;
a[px+1][py]=6;
a[px+2][py]=6;
a[px+3][py]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px+1][py+1]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px+3][py]=0;
in[6]=false;
}
if(a[px+1][py]==0&&a[px+2][py+1]==0&&a[px+2][py]==0&&a[px+3][py]==0) {
a[px][py]=6;
a[px+1][py]=6;
a[px+2][py+1]=6;
a[px+2][py]=6;
a[px+3][py]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py+1]=0;
a[px+2][py]=0;
a[px+3][py]=0;
in[6]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px+1][py+1]==0){
a[px][py]=6;
a[px][py+1]=6;
a[px][py+2]=6;
a[px][py+3]=6;
a[px+1][py+1]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px+1][py+1]=0;
in[6]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px-1][py+1]==0) {
a[px][py]=6;
a[px][py+1]=6;
a[px][py+2]=6;
a[px][py+3]=6;
a[px-1][py+1]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px-1][py+1]=0;
in[6]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px+1][py+2]==0) {
a[px][py]=6;
a[px][py+1]=6;
a[px][py+2]=6;
a[px][py+3]=6;
a[px+1][py+2]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px+1][py+2]=0;
in[6]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px-1][py+2]==0) {
a[px][py]=6;
a[px][py+1]=6;
a[px][py+2]=6;
a[px][py+3]=6;
a[px-1][py+2]=6;
in[6]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px-1][py+2]=0;
in[6]=false;
}
}
//G:4cases
if(!in[7]){
if(a[px][py+1]==0&&a[px+1][py]==0&&a[px+2][py+1]==0&&a[px+2][py]==0) {
a[px][py]=7;
a[px][py+1]=7;
a[px+1][py]=7;
a[px+2][py+1]=7;
a[px+2][py]=7;
in[7]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py]=0;
a[px+2][py+1]=0;
a[px+2][py]=0;
in[7]=false;
}
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0&&a[px+2][py]==0) {
a[px][py]=7;
a[px][py+1]=7;
a[px+1][py+1]=7;
a[px+2][py+1]=7;
a[px+2][py]=7;
in[7]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
a[px+2][py]=0;
in[7]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px+1][py+2]==0&&a[px+1][py]==0) {
a[px][py]=7;
a[px][py+1]=7;
a[px][py+2]=7;
a[px+1][py+2]=7;
a[px+1][py]=7;
in[7]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px+1][py+2]=0;
a[px+1][py]=0;
in[7]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+1][py+2]==0&&a[px][py+2]==0) {
a[px][py]=7;
a[px+1][py]=7;
a[px+1][py+1]=7;
a[px+1][py+2]=7;
a[px][py+2]=7;
in[7]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+1][py+2]=0;
a[px][py+2]=0;
in[7]=false;
}
}
//H:8cases
if(!in[8]){
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+2][py]==0&&a[px+2][py+1]==0) {
a[px][py]=8;
a[px+1][py]=8;
a[px+1][py+1]=8;
a[px+2][py]=8;
a[px+2][py+1]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+2][py]=0;
a[px+2][py+1]=0;
in[8]=false;
}
if(a[px-1][py+1]==0&&a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+1][py]==0) {
a[px][py]=8;
a[px-1][py+1]=8;
a[px][py+1]=8;
a[px+1][py+1]=8;
a[px+1][py]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px-1][py+1]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+1][py]=0;
in[8]=false;
}
if(a[px][py+1]==0&&a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0) {
a[px][py]=8;
a[px+1][py]=8;
a[px][py+1]=8;
a[px+1][py+1]=8;
a[px+2][py+1]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
in[8]=false;
}
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px][py+1]==0&&a[px+1][py+1]==0){
a[px][py]=8;
a[px+1][py]=8;
a[px+2][py]=8;
a[px][py+1]=8;
a[px+1][py+1]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
in[8]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px+1][py+1]==0&&a[px+1][py+2]==0) {
a[px][py]=8;
a[px][py+1]=8;
a[px][py+2]=8;
a[px+1][py+1]=8;
a[px+1][py+2]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px+1][py+1]=0;
a[px+1][py+2]=0;
in[8]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px-1][py+1]==0&&a[px-1][py+2]==0){
a[px][py]=8;
a[px][py+1]=8;
a[px][py+2]=8;
a[px-1][py+1]=8;
a[px-1][py+2]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px-1][py+1]=0;
a[px-1][py+2]=0;
in[8]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px+1][py]==0&&a[px+1][py+1]==0) {
a[px][py]=8;
a[px][py+1]=8;
a[px][py+2]=8;
a[px+1][py]=8;
a[px+1][py+1]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
in[8]=false;
}
if(a[px][py+1]==0&&a[px+1][py+2]==0&&a[px+1][py+1]==0&&a[px+1][py]==0){
a[px][py]=8;
a[px][py+1]=8;
a[px+1][py+2]=8;
a[px+1][py+1]=8;
a[px+1][py]=8;
in[8]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+2]=0;
a[px+1][py+1]=0;
a[px+1][py]=0;
in[8]=false;
}
}
//I:8cases
if(!in[9]){
if(a[px+1][py]==0&&a[px+2][py]==0&&a[px+2][py+1]==0&&a[px+3][py+1]==0){
a[px][py]=9;
a[px+1][py]=9;
a[px+2][py]=9;
a[px+2][py+1]=9;
a[px+3][py+1]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px+2][py+1]=0;
a[px+3][py+1]=0;
in[9]=false;
}
if(a[px-2][py+1]==0&&a[px-1][py+1]==0&&a[px][py+1]==0&&a[px+1][py]==0) {
a[px][py]=9;
a[px-2][py+1]=9;
a[px-1][py+1]=9;
a[px][py+1]=9;
a[px+1][py]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px-2][py+1]=0;
a[px-1][py+1]=0;
a[px][py+1]=0;
a[px+1][py]=0;
in[9]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0&&a[px+3][py+1]==0){
a[px][py]=9;
a[px+1][py]=9;
a[px+1][py+1]=9;
a[px+2][py+1]=9;
a[px+3][py+1]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
a[px+3][py+1]=0;
in[9]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-2][py+1]==0&&a[px+1][py]==0){
a[px][py]=9;
a[px][py+1]=9;
a[px-1][py+1]=9;
a[px-2][py+1]=9;
a[px+1][py]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
a[px-2][py+1]=0;
a[px+1][py]=0;
in[9]=false;
}
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+1][py+3]==0&&a[px+1][py+2]==0){
a[px][py]=9;
a[px][py+1]=9;
a[px+1][py+1]=9;
a[px+1][py+3]=9;
a[px+1][py+2]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+1][py+3]=0;
a[px+1][py+2]=0;
in[9]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-1][py+3]==0&&a[px-1][py+2]==0){
a[px][py]=9;
a[px][py+1]=9;
a[px-1][py+1]=9;
a[px-1][py+3]=9;
a[px-1][py+2]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
a[px-1][py+3]=0;
a[px-1][py+2]=0;
in[9]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px+1][py+2]==0&&a[px+1][py+3]==0) {
a[px][py]=9;
a[px][py+1]=9;
a[px][py+2]=9;
a[px+1][py+2]=9;
a[px+1][py+3]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px+1][py+2]=0;
a[px+1][py+3]=0;
in[9]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px-1][py+2]==0&&a[px-1][py+3]==0) {
a[px][py]=9;
a[px][py+1]=9;
a[px][py+2]=9;
a[px-1][py+2]=9;
a[px-1][py+3]=9;
in[9]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px-1][py+2]=0;
a[px-1][py+3]=0;
in[9]=false;
}
}
//J:1case
if(!in[10]){
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px-1][py+1]==0&&a[px+1][py+1]==0) {
a[px][py]=10;
a[px][py+1]=10;
a[px][py+2]=10;
a[px-1][py+1]=10;
a[px+1][py+1]=10;
in[10]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px-1][py+1]=0;
a[px+1][py+1]=0;
in[10]=false;
}
}
//K:4cases
if(!in[11]){
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+1][py+2]==0&&a[px+2][py+2]==0) {
a[px][py]=11;
a[px][py+1]=11;
a[px+1][py+1]=11;
a[px+1][py+2]=11;
a[px+2][py+2]=11;
in[11]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+1][py+2]=0;
a[px+2][py+2]=0;
in[11]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-1][py+2]==0&&a[px-2][py+2]==0) {
a[px][py]=11;
a[px][py+1]=11;
a[px-1][py+1]=11;
a[px-1][py+2]=11;
a[px-2][py+2]=11;
in[11]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
a[px-1][py+2]=0;
a[px-2][py+2]=0;
in[11]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0&&a[px+2][py+2]==0){
a[px][py]=11;
a[px+1][py]=11;
a[px+1][py+1]=11;
a[px+2][py+1]=11;
a[px+2][py+2]=11;
in[11]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
a[px+2][py+2]=0;
in[11]=false;
}
if(a[px+1][py]==0&&a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-1][py+2]==0){
a[px][py]=11;
a[px][py+1]=11;
a[px+1][py]=11;
a[px-1][py+1]=11;
a[px-1][py+2]=11;
in[11]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py]=0;
a[px-1][py+1]=0;
a[px-1][py+2]=0;
in[11]=false;
}
}
//L:8cases
if(!in[12]){
if(a[px][py+1]==0&&a[px+1][py]==0&&a[px+2][py]==0&&a[px+3][py]==0) {
a[px][py]=12;
a[px][py+1]=12;
a[px+1][py]=12;
a[px+2][py]=12;
a[px+3][py]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px+3][py]=0;
in[12]=false;
}
if(a[px+3][py+1]==0&&a[px+1][py]==0&&a[px+2][py]==0&&a[px+3][py]==0){
a[px][py]=12;
a[px+3][py+1]=12;
a[px+1][py]=12;
a[px+2][py]=12;
a[px+3][py]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px+3][py+1]=0;
a[px+1][py]=0;
a[px+2][py]=0;
a[px+3][py]=0;
in[12]=false;
}
if(a[px][py+1]==0&&a[px+1][py+1]==0&&a[px+2][py+1]==0&&a[px+3][py+1]==0){
a[px][py]=12;
a[px][py+1]=12;
a[px+1][py+1]=12;
a[px+2][py+1]=12;
a[px+3][py+1]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py+1]=0;
a[px+2][py+1]=0;
a[px+3][py+1]=0;
in[12]=false;
}
if(a[px][py+1]==0&&a[px-1][py+1]==0&&a[px-2][py+1]==0&&a[px-3][py+1]==0){
a[px][py]=12;
a[px][py+1]=12;
a[px-1][py+1]=12;
a[px-2][py+1]=12;
a[px-3][py+1]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px-1][py+1]=0;
a[px-2][py+1]=0;
a[px-3][py+1]=0;
in[12]=false;
}
if(a[px+1][py]==0&&a[px+1][py+1]==0&&a[px+1][py+2]==0&&a[px+1][py+3]==0) {
a[px][py]=12;
a[px+1][py]=12;
a[px+1][py+1]=12;
a[px+1][py+2]=12;
a[px+1][py+3]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px+1][py]=0;
a[px+1][py+1]=0;
a[px+1][py+2]=0;
a[px+1][py+3]=0;
in[12]=false;
}
if(a[px+1][py]==0&&a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0){
a[px][py]=12;
a[px][py+1]=12;
a[px+1][py]=12;
a[px][py+2]=12;
a[px][py+3]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px+1][py]=0;
a[px][py+2]=0;
a[px][py+3]=0;
in[12]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px+1][py+3]==0) {
a[px][py]=12;
a[px][py+1]=12;
a[px][py+2]=12;
a[px][py+3]=12;
a[px+1][py+3]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px+1][py+3]=0;
in[12]=false;
}
if(a[px][py+1]==0&&a[px][py+2]==0&&a[px][py+3]==0&&a[px-1][py+3]==0) {
a[px][py]=12;
a[px][py+1]=12;
a[px][py+2]=12;
a[px][py+3]=12;
a[px-1][py+3]=12;
in[12]=true;
dfs();
a[px][py]=0;
a[px][py+1]=0;
a[px][py+2]=0;
a[px][py+3]=0;
a[px-1][py+3]=0;
in[12]=false;
}
}
}
void openfile(){ freopen("game.in","r",stdin); freopen("game.out","w",stdout); }
int main(){ //openfile(); init(); dfs(); printf("No solution"); return 0; }
kaogu
考古
日常考古
发这干嘛
考古