A
AA
AAA
AAAA
AAAAA
GAGAAC
GGGCCCA
EEEHHAAA
EAHHHCAAF
EAACCCFFFF
我的代码输出这个,手推了几遍觉得这个没有问题。 代码:
#include<bits/stdc++.h>
using namespace std;
bool book[11][11];
char mat[11][11];
int nxt1[4][3][2]={{0,0,1,0,1,-1},{0,0,1,0,1,1},{0,0,0,1,1,1},{0,0,0,1,1,0}};
int nxt2[2][4][2]={{0,0,0,1,0,2,0,3},{0,0,1,0,2,0,3,0}};
int nxt3[8][4][2]={{0,0,1,0,2,0,2,1},{0,0,1,0,2,0,2,-1},{0,0,0,1,1,1,2,1},{0,0,1,0,2,0,0,1},{0,0,0,1,0,2,1,0},{0,0,0,1,0,2,1,2},{0,0,1,0,1,1,1,2},{0,0,1,0,1,-1,1,-2}};
int nxt4[1][4][2]={{0,0,0,1,1,0,1,1}};
int nxt5[4][5][2]={{0,0,1,0,2,0,2,1,2,2},{0,0,1,0,2,0,2,-1,2,-2},{0,0,0,1,0,2,1,2,2,2},{0,0,1,0,2,0,0,1,0,2}};
int nxt6[8][5][2]={{0,0,1,0,1,1,2,0,3,0},{0,0,1,0,2,0,3,0,2,-1},{0,0,0,1,0,2,0,3,1,2},{0,0,0,1,-1,1,0,2,0,3},{0,0,0,1,1,1,0,2,0,3},{0,0,1,0,2,0,2,1,3,0},{0,0,0,1,0,2,-1,2,0,3},{0,0,0,1,-1,1,1,1,2,1}};
int nxt7[4][5][2]={{0,0,1,0,0,1,0,2,1,2},{0,0,0,1,1,0,2,0,2,1},{0,0,1,0,1,1,1,2,0,2},{0,0,0,1,1,1,2,1,2,0}};
int nxt8[8][5][2]={{0,0,1,0,0,1,1,1,-1,1},{0,0,0,1,1,0,1,1,2,0},{0,0,0,1,0,2,1,1,1,2},{0,0,1,0,0,1,1,1,1,2},{0,0,0,1,0,2,1,0,1,1},{0,0,0,1,1,0,1,1,2,1},{0,0,1,0,1,-1,1,1,0,1},{0,0,1,0,1,1,2,0,2,1}};
int nxt9[8][5][2]={{0,0,1,0,2,0,2,1,3,1},{0,0,1,0,1,1,2,1,3,1},{0,0,0,1,0,2,-1,2,-1,3},{0,0,1,0,1,-1,0,1,0,2},{0,0,0,1,0,2,1,2,1,3},{0,0,1,0,2,0,2,-1,3,-1},{0,0,0,1,1,1,1,2,1,3},{0,0,1,0,2,0,0,1,-1,1}};
int nxt10[1][5][2]={{0,0,-1,0,0,-1,1,0,0,1}};
int nxt11[4][5][2]={{0,0,1,0,1,1,2,1,2,2},{0,0,0,1,1,0,1,-1,2,-1},{0,0,1,0,1,-1,2,-1,2,-2},{0,0,0,1,1,1,1,2,2,2}};
int nxt12[8][5][2]={{0,0,1,0,2,0,3,0,3,-1},{0,0,1,0,2,0,3,0,0,1},{0,0,0,1,0,2,0,3,1,3},{0,0,1,0,1,1,1,2,1,3},{0,0,0,1,0,2,0,3,1,0},{0,0,0,1,1,1,2,1,3,1},{0,0,0,1,0,2,0,3,-1,3},{0,0,1,0,2,0,3,0,3,1}};
void dfs(){
// for(int i=1;i<=10;i++){
// for(int j=1;j<=i;j++){
// cout<<mat[i][j];
// }
// cout<<"\n";
// }
// cout<<"\n";
// _sleep(1000);
if((double)clock()/CLOCKS_PER_SEC>0.9){
cout<<"No solution";
exit(0);
}
bool c=false;
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
if(mat[i][j]=='.'){
c=true;
bool flag=false;
/*A*/
for(int i1=0;i1<4;i1++){
bool flag1=true;
for(int j1=0;j1<3;j1++){
int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<3;j1++){
int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
mat[nx][ny]='A';
}
dfs();
for(int j1=0;j1<3;j1++){
int nx=i+nxt1[i1][j1][0],ny=j+nxt1[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*B*/
for(int i1=0;i1<2;i1++){
bool flag1=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
mat[nx][ny]='B';
}
dfs();
for(int j1=0;j1<4;j1++){
int nx=i+nxt2[i1][j1][0],ny=j+nxt2[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*C*/
for(int i1=0;i1<8;i1++){
bool flag1=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
mat[nx][ny]='C';
}
dfs();
for(int j1=0;j1<4;j1++){
int nx=i+nxt3[i1][j1][0],ny=j+nxt3[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*D*/
for(int i1=0;i1<1;i1++){
bool flag1=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<4;j1++){
int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
mat[nx][ny]='D';
}
dfs();
for(int j1=0;j1<4;j1++){
int nx=i+nxt4[i1][j1][0],ny=j+nxt4[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*E*/
for(int i1=0;i1<4;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
mat[nx][ny]='E';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt5[i1][j1][0],ny=j+nxt5[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*F*/
for(int i1=0;i1<8;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
mat[nx][ny]='F';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt6[i1][j1][0],ny=j+nxt6[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*G*/
for(int i1=0;i1<4;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
mat[nx][ny]='G';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt7[i1][j1][0],ny=j+nxt7[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*H*/
for(int i1=0;i1<8;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
mat[nx][ny]='H';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt8[i1][j1][0],ny=j+nxt8[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*I*/
for(int i1=0;i1<8;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
mat[nx][ny]='i1';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt9[i1][j1][0],ny=j+nxt9[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*J*/
for(int i1=0;i1<1;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
mat[nx][ny]='J';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt10[i1][j1][0],ny=j+nxt10[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*K*/
for(int i1=0;i1<4;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
mat[nx][ny]='K';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt11[i1][j1][0],ny=j+nxt11[i1][j1][1];
mat[nx][ny]='.';
}
}
}
/*L*/
for(int i1=0;i1<8;i1++){
bool flag1=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
if(nx<1||nx>10||ny<1||ny>10||book[nx][ny]==false||mat[nx][ny]!='.'){
flag1=false;
break;
}
}
if(flag1==true){
flag=true;
for(int j1=0;j1<5;j1++){
int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
mat[nx][ny]='L';
}
dfs();
for(int j1=0;j1<5;j1++){
int nx=i+nxt12[i1][j1][0],ny=j+nxt12[i1][j1][1];
mat[nx][ny]='.';
}
}
}
if(flag==false){
return;
}
}
}
}
if(c==false){
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
cout<<mat[i][j];
}
cout<<"\n";
}
exit(0);
}
return;
}
int main(){
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
cin>>mat[i][j];
book[i][j]=true;
}
}
dfs();
cout<<"No solution";
}