题解 P4205 【[NOI2005]智慧珠游戏 】

· · 题解

没什么说的,枚举所有情况即可,每种情况在代码中有标出,然后在卡个时间不要超时即可

#include<bits/stdc++.h>
#define pts putchar('\n');
#define ptc putchar(' ');
using namespace std;
typedef long long ll;
const int maxm=2e6+9;
const int maxn=2e5+9;
const int N=50+9;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
const double eps=1e-4;
char  G[N][N];
int in[maxn];
int timee=0;
char read(){
    char x=getchar();
    while(x!='.'&&(x>'Z'||x<'A')) x=getchar();
    return x;
}
int gett(){
    for(int i=1;i<=10;++i){
        for(int j=1;j<=i;++j){
            if(G[j][i]=='.') return 100*j+i;
        }
    }
}
int ok(){
    for(int i='A';i<='L';++i) if(in[i]==0) return 0;
    return 1;
}
void out(){
    for(int i=1;i<=10;++i){
        for(int j=1;j<=i;++j){
            putchar(G[j][i]);
        }pts;
    }
}
void dfs(){
    timee++;
    if(timee>5e6){puts("No solution");exit(0);}
    if(ok()) {out();exit(0);}
    int now=gett();
    int x=now/100,y=now%10;
    if(y==0) y=10;

    if(!in['A'])//4
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.')// 下右 
        /*
            1 1 
            1 0     
        */
        {
            G[x][y]=G[x+1][y]=G[x][y+1]='A';in['A']=1; 
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]='.';in['A']=0;
        }
        if(G[x+1][y+1]=='.'&&G[x][y+1]=='.')// 下左 
        /*
            1 1  
            0 1     
        */
        {
            G[x][y]=G[x+1][y+1]=G[x][y+1]='A';in['A']=1; 
            dfs();
            G[x][y]=G[x+1][y+1]=G[x][y+1]='.';in['A']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.')//上右
        /*
            1 0
            1 1     
        */
        {
            G[x][y]=G[x+1][y]=G[x+1][y+1]='A';in['A']=1; 
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]='.';in['A']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.')// 上左
        /*
            0 1
            1 1     
        */
        {
            G[x][y]=G[x][y+1]=G[x-1][y+1]='A';in['A']=1; 
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]='.';in['A']=0;
        }
    }
    if(!in['B'])//2
    {
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//垂直 
        /*
            1
            1
            1
            1
        */
        {
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]='B';in['B']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]='.';in['B']=0;
        }

        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//水平 
        /*
            1 1 1 1
        */
        {
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='B';in['B']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='.';in['B']=0;
        }
    } 


    if(!in['C'])//8
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.')//1
        {
            /*
                1 1 1
                1           
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]='C';in['C']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]='.';in['C']=0;
        }   
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.')//2
        {
            /*
                1 1
                  1
                  1         
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='C';in['C']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='.';in['C']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.')//3
        {
            /*
                    1
                1 1 1
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]='C';in['C']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]='.';in['C']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
        {
            /*
                1
                1
                1 1
            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='C';in['C']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='.';in['C']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.')//5
        {
            /*
                1
                1 1 1           
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]='C';in['C']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]='.';in['C']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.')//6
        {
            /*
                1 1
                1
                1           
            */
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]='C';in['C']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]='.';in['C']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//7
        {
            /*
                1 1 1
                    1           
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='C';in['C']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['C']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//8
        {
            /*
                  1
                  1
                1 1
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='C';in['C']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['C']=0;
        }
    } 

    if(!in['D'])//1
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.')
        {
            /*
                1 1
                1 1         
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]='D';in['D']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]='.';in['D']=0;
        }
    }

    if(!in['E'])//4
    {
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x-2][y+2]=='.')//1
        {
            /*
                    1
                    1
                1 1 1           
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-2][y+2]='E';in['E']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-2][y+2]='.';in['E']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y+2]=='.')//2
        {
            /*
                1
                1
                1 1 1

            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+2][y+2]='E';in['E']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+2][y+2]='.';in['E']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.')//3
        {
            /*
                1 1 1
                1
                1
            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x][y+1]=G[x][y+2]='E';in['E']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x][y+1]=G[x][y+2]='.';in['E']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x+2][y+2]=='.')//4
        {
            /*
                1 1 1
                    1
                    1           
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+2][y+2]='E';in['E']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+2][y+2]='.';in['E']=0;
        }
    }

    if(!in['F'])//8
    {
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x+1][y+1]=='.')//1
        {
            /*
                1 1 1 1
                  1             
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+1]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+1]='.';in['F']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x+2][y+1]=='.')//2
        {
            /*
                  1
                1 1
                  1
                  1
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x+2][y+1]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x+2][y+1]='.';in['F']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x][y+3]=='.')//3
        {
            /*  
                       1
                   1 1 1 1
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+2]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+2]='.';in['F']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y]=='.')//4
        {
            /*
                1
                1
                1 1
                1
            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y]='F';in['F']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y]='.';in['F']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//5
        {
            /* 
                  1
                1 1 1 1
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x][y+2]=G[x][y+3]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x][y+2]=G[x][y+3]='.';in['F']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//6
        {
            /*
                1 
                1 1 
                1 
                1
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+3][y]='F';in['F']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+3][y]='.';in['F']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x][y+3]=='.')//7
        {
            /*
                1 1 1 1 
                    1
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x][y+3]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x][y+3]='.';in['F']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//4
        {
            /*
                1 
                1
              1 1 
                1
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x-2][y+1]='F';in['F']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['F']=0;
        }
    }

    if(!in['G'])//4
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//1
        {
            /*
                1 1 1 
                1   1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='G';in['G']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['G']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y]=='.')//2
        {
            /*
                1 1
                  1
                1 1
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y]='G';in['G']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y]='.';in['G']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x][y+2]=='.')//3
        {
            /*
                1   1
                1 1 1
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x][y+2]='G';in['G']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x][y+2]='.';in['G']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
        {
            /*
                1 1 
                1  
                1 1
            */
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='G';in['G']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='.';in['G']=0;
        }
    }

    if(!in['H'])//8
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x][y+2]=='.')//1
        {
            /*
                1 1 1
                1 1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]='H';in['H']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]='.';in['H']=0;
        }

        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.')//2       
        {
            /*
                1 1
                1 1
                  1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='H';in['H']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='.';in['H']=0;
        }   
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x][y+2]=='.')//3
        {
            /*
                   1 1
                 1 1 1

            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x][y+2]='H';in['H']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x][y+2]='.';in['H']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
        {
            /*
                1
                1 1
                1 1
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+2][y+1]='H';in['H']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+2][y+1]='.';in['H']=0;
        }
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.')//5
        {
            /*
                1 1
                1 1 1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]='H';in['H']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]='.';in['H']=0;
        }
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.')//6
        {
            /*
                1 1
                1 1 
                1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y]='H';in['H']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y]='.';in['H']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//7
        {
            /*
                1 1 1
                  1 1           
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]=G[x+1][y+2]='H';in['H']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['H']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y]=='.'&&G[x-1][y+1]=='.')//8
        {
            /*     
                    1
                  1 1
                  1 1           
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y]=G[x-1][y+1]='H';in['H']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y]=G[x-1][y+1]='.';in['H']=0;
        }
    }

    if(!in['I'])//8
    {
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//1
        {
            /*     
                1 1 1
                    1 1         
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+1][y+3]='I';in['I']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+1][y+3]='.';in['I']=0;
        }
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//2
        {
            /*     
                    1
                    1
                  1 1
                  1     
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='I';in['I']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['I']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//3
        {
            /*     
                    1 1
                      1 1 1 
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='I';in['I']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='.';in['I']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.')//4
        {
            /*     
                      1
                    1 1
                    1
                    1   
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x+1][y]=G[x+2][y]='I';in['I']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x+1][y]=G[x+2][y]='.';in['I']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x-1][y+3]=='.')//5
        {
            /*     
                    1 1
                1 1 1       
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-1][y+3]='I';in['I']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-1][y+3]='.';in['I']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//6
        {
            /*     
                1
                1
                1 1
                  1     
            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y+1]='I';in['I']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y+1]='.';in['I']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x-1][y+3]=='.')//7
        {
            /*     
                  1 1 1
                1 1     
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-1][y+3]='I';in['I']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-1][y+3]='.';in['I']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//8
        {
            /*     
                  1
                  1 1
                    1
                    1   
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='I';in['I']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='.';in['I']=0;
        }
    }

    if(!in['J'])//1
    {
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x][y+2]=='.')//1
        {
            /*     
                    1
                  1 1 1
                    1   
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x][y+2]='J';in['J']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x][y+2]='.';in['J']=0;
        }
    }

    if(!in['K'])//4
    {
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y+2]=='.')//1
        {
            /*     
                   1
                   1 1
                     1 1
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y+2]='K';in['K']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y+2]='.';in['K']=0;
        }
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.')//2
        {
            /*     
                    1 1
                  1 1
                  1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]='K';in['K']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]='.';in['K']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+2][y+2]=='.')//3
        {
            /*     
                  1 1
                    1 1
                      1
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+2][y+2]='K';in['K']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+2][y+2]='.';in['K']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x-2][y+2]=='.')//4
        {
            /*     
                      1 
                    1 1
                  1 1
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-2][y+2]='K';in['K']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-2][y+2]='.';in['K']=0;
        }
    }

    if(!in['L'])//8
    {
        if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//1
        {
            /*     
                  1 1 1 1 
                  1
            */
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='L';in['L']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='.';in['L']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//2
        {
            /*     
                  1 1
                    1
                    1
                    1 
            */
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='L';in['L']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='.';in['L']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x-1][y+3]=='.')//3
        {
            /*     
                        1
                  1 1 1 1
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+3]='L';in['L']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+3]='.';in['L']=0;
        }
        if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.'&&G[x+3][y+1]=='.')//4
        {
            /*     
                    1
                    1
                    1
                    1 1
            */
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]=G[x+3][y+1]='L';in['L']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]=G[x+3][y+1]='.';in['L']=0;
        }
        if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//5
        {
            /*     
                   1
                   1 1 1 1 
            */
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='L';in['L']=1;
            dfs();
            G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='.';in['L']=0;
        }
        if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//6
        {
            /*     
                    1 1
                    1
                    1
                    1
            */
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+3][y]='L';in['L']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+3][y]='.';in['L']=0;
        }
        if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x+1][y+3]=='.')//7
        {
            /*     
                    1 1 1 1
                          1
            */
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+3]='L';in['L']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+3]='.';in['L']=0;
        }
        if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.'&&G[x-3][y+1]=='.')//8
        {
            /*     
                    1
                    1
                    1
                  1 1
            */
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]=G[x-3][y+1]='L';in['L']=1;
            dfs();
            G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]=G[x-3][y+1]='.';in['L']=0;
        }
    }
}
int main(){
//  freopen("123.txt","w",stdout);
    memset(in,0,sizeof(in));
    for(int i=1;i<=10;++i){
        for(int j=1;j<=i;++j){
            G[j][i]=read();
            if(G[j][i]!='.') in[G[j][i]]=1;
        }
    }
    dfs();
    puts("No solution");
    return 0;
}