求大佬给一个剪枝的思路,怎么改都是TLE。。。
查看原帖
求大佬给一个剪枝的思路,怎么改都是TLE。。。
222341
twocats楼主2021/8/7 21:34
#include<bits/stdc++.h>
#define MAX 300000000
using namespace std;

int s,cnt,u[20],M[20][20];

void dfs(int sum)
{
	cnt++;
	if(cnt>MAX)	puts("No solution"),exit(0);
	if(sum==55)
	{
		for(int i=1;i<=10;i++)
		{
			for(int j=1;j<=i;j++)	putchar(M[i][j]+64);
			putchar('\n');
		}
		exit(0);
	}
	for(int x=1;x<=10;x++)
	{
		for(int y=1;y<=x;y++)
		{
			if(M[x][y]!=-1)	continue;
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&u[1])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=1;
				u[1]=0;
				dfs(sum+3);
				u[1]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=-1;
			}//1
			if(M[x-1][y]==-1&&M[x][y+1]==-1&&u[1])
			{
				M[x][y]=M[x-1][y]=M[x][y+1]=1;
				u[1]=0;
				dfs(sum+3);
				u[1]=1;
				M[x][y]=M[x-1][y]=M[x][y+1]=-1;
			}//2
			if(M[x+1][y]==-1&&M[x][y-1]==-1&&u[1])
			{
				M[x][y]=M[x+1][y]=M[x][y-1]=1;
				u[1]=0;
				dfs(sum+3);
				u[1]=1;
				M[x][y]=M[x+1][y]=M[x][y-1]=-1;
			}//3
			if(M[x-1][y]==-1&&M[x][y-1]==-1&&u[1])
			{
				M[x][y]=M[x-1][y]=M[x][y-1]=1;
				u[1]=0;
				dfs(sum+3);
				u[1]=1;
				M[x][y]=M[x-1][y]=M[x][y-1]=-1;
			}//4
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+3][y]==-1&&u[2])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+3][y]=2;
				u[2]=0;
				dfs(sum+4);
				u[2]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+3][y]=-1;
			}//5
			if(M[x][y+1]==-1&&M[x][y+2]==-1&&M[x][y+3]==-1&&u[2])
			{
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=2;
				u[2]=0;
				dfs(sum+4);
				u[2]=1;
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=-1;
			}//6
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&u[3])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=-1;
			}//7
			if(M[x-1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&u[3])
			{
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=-1;
			}//8
			if(M[x+1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&u[3])
			{
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=-1;
			}//9
			if(M[x-1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&u[3])
			{
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=-1;
			}//10
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x][y+1]==-1&&u[3])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y+1]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y+1]=-1;
			}//11
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x][y+1]==-1&&u[3])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y+1]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y+1]=-1;
			}//12
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x][y-1]==-1&&u[3])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y-1]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y-1]=-1;
			}//13
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x][y-1]==-1&&u[3])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y-1]=3;
				u[3]=0;
				dfs(sum+4);
				u[3]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y-1]=-1;
			}//14
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&M[x+1][y+1]==-1&&u[4])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x+1][y+1]=4;
				u[4]=0;
				dfs(sum+4);
				u[4]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x+1][y+1]=-1;
			}//15
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&u[5])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y+1]=M[x][y+2]=5;
				u[5]=0;
				dfs(sum+5);
				u[5]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y+1]=M[x][y+2]=-1;
			}//16
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&u[5])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y+1]=M[x][y+2]=5;
				u[5]=0;
				dfs(sum+5);
				u[5]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y+1]=M[x][y+2]=-1;
			}//17
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&u[5])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y-1]=M[x][y-2]=5;
				u[5]=0;
				dfs(sum+5);
				u[5]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x][y-1]=M[x][y-2]=-1;
			}//18
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&u[5])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y-1]=M[x][y-2]=5;
				u[5]=0;
				dfs(sum+5);
				u[5]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x][y-1]=M[x][y-2]=-1;
			}//19
			if(M[x][y+1]==-1&&M[x+1][y+1]==-1&&M[x][y+2]==-1&&M[x][y+3]==-1&&u[6])
			{
				M[x][y]=M[x][y+1]=M[x+1][y+1]=M[x][y+2]=M[x][y+3]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x][y+1]=M[x+1][y+1]=M[x][y+2]=M[x][y+3]=-1;
			}//20
			if(M[x][y+1]==-1&&M[x-1][y+1]==-1&&M[x][y+2]==-1&&M[x][y+3]==-1&&u[6])
			{
				M[x][y]=M[x][y+1]=M[x-1][y+1]=M[x][y+2]=M[x][y+3]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x][y+1]=M[x-1][y+1]=M[x][y+2]=M[x][y+3]=-1;
			}//21
			if(M[x][y-1]==-1&&M[x+1][y-1]==-1&&M[x][y-2]==-1&&M[x][y-3]==-1&&u[6])
			{
				M[x][y]=M[x][y-1]=M[x+1][y-1]=M[x][y-2]=M[x][y-3]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x][y-1]=M[x+1][y-1]=M[x][y-2]=M[x][y-3]=-1;
			}//22
			if(M[x][y-1]==-1&&M[x-1][y-1]==-1&&M[x][y-2]==-1&&M[x][y-3]==-1&&u[6])
			{
				M[x][y]=M[x][y-1]=M[x-1][y-1]=M[x][y-2]=M[x][y-3]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x][y-1]=M[x-1][y-1]=M[x][y-2]=M[x][y-3]=-1;
			}//23
			if(M[x+1][y]==-1&&M[x+1][y+1]==-1&&M[x+2][y]==-1&&M[x+3][y]==-1&&u[6])
			{
				M[x][y]=M[x+1][y]=M[x+1][y+1]=M[x+2][y]=M[x+3][y]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x+1][y]=M[x+1][y+1]=M[x+2][y]=M[x+3][y]=-1;
			}//24
			if(M[x+1][y]==-1&&M[x+1][y-1]==-1&&M[x+2][y]==-1&&M[x+3][y]==-1&&u[6])
			{
				M[x][y]=M[x+1][y]=M[x+1][y-1]=M[x+2][y]=M[x+3][y]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x+1][y]=M[x+1][y-1]=M[x+2][y]=M[x+3][y]=-1;
			}//25
			if(M[x-1][y]==-1&&M[x-1][y+1]==-1&&M[x-2][y]==-1&&M[x-3][y]==-1&&u[6])
			{
				M[x][y]=M[x-1][y]=M[x-1][y+1]=M[x-2][y]=M[x-3][y]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x-1][y]=M[x-1][y+1]=M[x-2][y]=M[x-3][y]=-1;
			}//26
			if(M[x-1][y]==-1&&M[x-1][y-1]==-1&&M[x-2][y]==-1&&M[x-3][y]==-1&&u[6])
			{
				M[x][y]=M[x-1][y]=M[x-1][y-1]=M[x-2][y]=M[x-3][y]=6;
				u[6]=0;
				dfs(sum+5);
				u[6]=1;
				M[x][y]=M[x-1][y]=M[x-1][y-1]=M[x-2][y]=M[x-3][y]=-1;
			}//27
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x+1][y+2]==-1&&u[7])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+2]=7;
				u[7]=0;
				dfs(sum+5);
				u[7]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+2]=-1;
			}//28
			if(M[x-1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x-1][y+2]==-1&&u[7])
			{
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+2]=7;
				u[7]=0;
				dfs(sum+5);
				u[7]=1;
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+2]=-1;
			}//29
			if(M[x+1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&M[x+1][y-2]==-1&&u[7])
			{
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-2]=7;
				u[7]=0;
				dfs(sum+5);
				u[7]=1;
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-2]=-1;
			}//30
			if(M[x-1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&M[x-1][y-2]==-1&&u[7])
			{
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-2]=7;
				u[7]=0;
				dfs(sum+5);
				u[7]=1;
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-2]=-1;
			}//31
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x+1][y+1]==-1&&u[8])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+1]=-1;
			}//32
			if(M[x-1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x-1][y+1]==-1&&u[8])
			{
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+1]=-1;
			}//33
			if(M[x+1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&M[x+1][y-1]==-1&&u[8])
			{
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x+1][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-1]=-1;
			}//34
			if(M[x-1][y]==-1&&M[x][y-1]==-1&&M[x][y-2]==-1&&M[x-1][y-1]==-1&&u[8])
			{
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-1]=-1;
			}//35
			if(M[x][y+1]==-1&&M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+1][y+1]==-1&&u[8])
			{
				M[x][y]=M[x][y+1]=M[x+1][y]=M[x+2][y]=M[x+1][y+1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x][y+1]=M[x+1][y]=M[x+2][y]=M[x+1][y+1]=-1;
			}//36
			if(M[x][y-1]==-1&&M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+1][y-1]==-1&&u[8])
			{
				M[x][y]=M[x][y-1]=M[x+1][y]=M[x+2][y]=M[x+1][y-1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x][y-1]=M[x+1][y]=M[x+2][y]=M[x+1][y-1]=-1;
			}//37
			if(M[x][y+1]==-1&&M[x-1][y]==-1&&M[x-2][y]==-1&&M[x-1][y+1]==-1&&u[8])
			{
				M[x][y]=M[x][y+1]=M[x-1][y]=M[x-2][y]=M[x-1][y+1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x][y+1]=M[x-1][y]=M[x-2][y]=M[x-1][y+1]=-1;
			}//38
			if(M[x][y-1]==-1&&M[x-1][y]==-1&&M[x-2][y]==-1&&M[x-1][y-1]==-1&&u[8])
			{
				M[x][y]=M[x][y-1]=M[x-1][y]=M[x-2][y]=M[x-1][y-1]=8;
				u[8]=0;
				dfs(sum+5);
				u[8]=1;
				M[x][y]=M[x][y-1]=M[x-1][y]=M[x-2][y]=M[x-1][y-1]=-1;
			}//39
			if(M[x][y+1]==-1&&M[x][y+2]==-1&&M[x+1][y+2]==-1&&M[x+1][y+3]==-1&&u[9])
			{
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+2]=M[x+1][y+3]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x+1][y+2]=M[x+1][y+3]=-1;
			}//40
			if(M[x][y-1]==-1&&M[x][y-2]==-1&&M[x+1][y-2]==-1&&M[x+1][y-3]==-1&&u[9])
			{
				M[x][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-2]=M[x+1][y-3]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x][y-1]=M[x][y-2]=M[x+1][y-2]=M[x+1][y-3]=-1;
			}//41
			if(M[x][y+1]==-1&&M[x][y+2]==-1&&M[x-1][y+2]==-1&&M[x-1][y+3]==-1&&u[9])
			{
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+2]=M[x-1][y+3]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x][y+1]=M[x][y+2]=M[x-1][y+2]=M[x-1][y+3]=-1;
			}//42
			if(M[x][y-1]==-1&&M[x][y-2]==-1&&M[x-1][y-2]==-1&&M[x-1][y-3]==-1&&u[9])
			{
				M[x][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-2]=M[x-1][y-3]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x][y-1]=M[x][y-2]=M[x-1][y-2]=M[x-1][y-3]=-1;
			}//43
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+2][y+1]==-1&&M[x+3][y+1]==-1&&u[9])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+2][y+1]=M[x+3][y+1]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+2][y+1]=M[x+3][y+1]=-1;
			}//44
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x-2][y+1]==-1&&M[x-3][y+1]==-1&&u[9])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x-2][y+1]=M[x-3][y+1]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x-2][y+1]=M[x-3][y+1]=-1;
			}//45
			if(M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+2][y-1]==-1&&M[x+3][y-1]==-1&&u[9])
			{
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+2][y-1]=M[x+3][y-1]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x+1][y]=M[x+2][y]=M[x+2][y-1]=M[x+3][y-1]=-1;
			}//46
			if(M[x-1][y]==-1&&M[x-2][y]==-1&&M[x-2][y-1]==-1&&M[x-3][y-1]==-1&&u[9])
			{
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x-2][y-1]=M[x-3][y-1]=9;
				u[9]=0;
				dfs(sum+5);
				u[9]=1;
				M[x][y]=M[x-1][y]=M[x-2][y]=M[x-2][y-1]=M[x-3][y-1]=-1;
			}//47
			if(M[x-1][y]==-1&&M[x][y-1]==-1&&M[x+1][y]==-1&&M[x][y+1]==-1&&u[10])
			{
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x+1][y]=M[x][y+1]=10;
				u[10]=0;
				dfs(sum+5);
				u[10]=1;
				M[x][y]=M[x-1][y]=M[x][y-1]=M[x+1][y]=M[x][y+1]=-1;
			}//48
			if(M[x+1][y]==-1&&M[x+1][y+1]==-1&&M[x+2][y+1]==-1&&M[x+2][y+2]==-1&&u[11])
			{
				M[x][y]=M[x+1][y]=M[x+1][y+1]=M[x+2][y+1]=M[x+2][y+2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x+1][y]=M[x+1][y+1]=M[x+2][y+1]=M[x+2][y+2]=-1;
			}//49
			if(M[x-1][y]==-1&&M[x-1][y+1]==-1&&M[x-2][y+1]==-1&&M[x-2][y+2]==-1&&u[11])
			{
				M[x][y]=M[x-1][y]=M[x-1][y+1]=M[x-2][y+1]=M[x-2][y+2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x-1][y]=M[x-1][y+1]=M[x-2][y+1]=M[x-2][y+2]=-1;
			}//50
			if(M[x+1][y]==-1&&M[x+1][y-1]==-1&&M[x+2][y-1]==-1&&M[x+2][y-2]==-1&&u[11])
			{
				M[x][y]=M[x+1][y]=M[x+1][y-1]=M[x+2][y-1]=M[x+2][y-2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x+1][y]=M[x+1][y-1]=M[x+2][y-1]=M[x+2][y-2]=-1;
			}//51
			if(M[x-1][y]==-1&&M[x-1][y-1]==-1&&M[x-2][y-1]==-1&&M[x-2][y-2]==-1&&u[11])
			{
				M[x][y]=M[x-1][y]=M[x-1][y-1]=M[x-2][y-1]=M[x-2][y-2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x-1][y]=M[x-1][y-1]=M[x-2][y-1]=M[x-2][y-2]=-1;
			}//52
			if(M[x][y+1]==-1&&M[x+1][y+1]==-1&&M[x+1][y+2]==-1&&M[x+2][y+2]==-1&&u[11])
			{
				M[x][y]=M[x][y+1]=M[x+1][y+1]=M[x+1][y+2]=M[x+2][y+2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x][y+1]=M[x+1][y+1]=M[x+1][y+2]=M[x+2][y+2]=-1;
			}//53
			if(M[x][y-1]==-1&&M[x+1][y-1]==-1&&M[x+1][y-2]==-1&&M[x+2][y-2]==-1&&u[11])
			{
				M[x][y]=M[x][y-1]=M[x+1][y-1]=M[x+1][y-2]=M[x+2][y-2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x][y-1]=M[x+1][y-1]=M[x+1][y-2]=M[x+2][y-2]=-1;
			}//54
			if(M[x][y+1]==-1&&M[x-1][y+1]==-1&&M[x-1][y+2]==-1&&M[x-2][y+2]==-1&&u[11])
			{
				M[x][y]=M[x][y+1]=M[x-1][y+1]=M[x-1][y+2]=M[x-2][y+2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x][y+1]=M[x-1][y+1]=M[x-1][y+2]=M[x-2][y+2]=-1;
			}//55
			if(M[x][y-1]==-1&&M[x-1][y-1]==-1&&M[x-1][y-2]==-1&&M[x-2][y-2]==-1&&u[11])
			{
				M[x][y]=M[x][y-1]=M[x-1][y-1]=M[x-1][y-2]=M[x-2][y-2]=11;
				u[11]=0;
				dfs(sum+5);
				u[11]=1;
				M[x][y]=M[x][y-1]=M[x-1][y-1]=M[x-1][y-2]=M[x-2][y-2]=-1;
			}//56
			if(M[x+1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x][y+3]==-1&&u[12])
			{
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=12;
				u[12]=0;
				dfs(sum+5);
				u[12]=1;
				M[x][y]=M[x+1][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=-1;
			}//57
			if(M[x-1][y]==-1&&M[x][y+1]==-1&&M[x][y+2]==-1&&M[x][y+3]==-1&&u[12])
			{
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=12;
				u[12]=0;
				dfs(sum+5);
				u[12]=1;
				M[x][y]=M[x-1][y]=M[x][y+1]=M[x][y+2]=M[x][y+3]=-1;
			}//58
			if(M[x][y+1]==-1&&M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+3][y]==-1&&u[12])
			{
				M[x][y]=M[x][y+1]=M[x+1][y]=M[x+2][y]=M[x+3][y]=12;
				u[12]=0;
				dfs(sum+5);
				u[12]=1;
				M[x][y]=M[x][y+1]=M[x+1][y]=M[x+2][y]=M[x+3][y]=-1;
			}//59
			if(M[x][y-1]==-1&&M[x+1][y]==-1&&M[x+2][y]==-1&&M[x+3][y]==-1&&u[12])
			{
				M[x][y]=M[x][y-1]=M[x+1][y]=M[x+2][y]=M[x+3][y]=12;
				u[12]=0;
				dfs(sum+5);
				u[12]=1;
				M[x][y]=M[x][y-1]=M[x+1][y]=M[x+2][y]=M[x+3][y]=-1;
			}//60
		}
	}
}

int main()
{
	u[1]=u[2]=u[3]=u[4]=u[5]=u[6]=u[7]=u[8]=u[9]=u[10]=u[11]=u[12]=1;
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=i;j++)
		{
			char ch;	cin>>ch;
			if(ch!='.')	s++,u[ch-64]=0;
			M[i][j]=(ch=='.'?-1:ch-64);
		}
	}
	dfs(s);
	return 0;
}
2021/8/7 21:34
加载中...