#include<stdio.h>
#include<string.h>
int graph[6][6];
int num;
int maxnum;
bool ok(int cur)
{
int x,y;
x = cur/num+1;
y = cur%num+1;
while(graph[x][y]!=-1)
{
if(graph[x][y] == 1)
return false;
--x;
}
x = cur/num+1;
y = cur%num+1;
while(graph[x][y]!=-1)
{
if(graph[x][y] == 1)
return false;
++x;
}
x = cur/num+1;
y = cur%num+1;
while(graph[x][y]!=-1)
{
if(graph[x][y] == 1)
return false;
--y;
}
x = cur/num+1;
y = cur%num+1;
while(graph[x][y]!=-1)
{
if(graph[x][y] == 1)
return false;
++y;
}
return true;
}
void dfs(int cur,int max)
{
while(graph[cur/num+1][cur%num+1] !=0 && cur < num*num)
{
cur++;
}
if(cur >= num*num)
{
if(max > maxnum)
maxnum = max;
return;
}
if(ok(cur))
{
graph[cur/num+1][cur%num+1] = 1;
dfs(cur+1,max+1);
graph[cur/num+1][cur%num+1] = 0;
}
dfs(cur+1,max);
}
int main()
{
//
freopen("input.txt","r",stdin);
char row[10];
while(scanf("%d", &num) == 1)
{
if(!num) break;
memset(graph, -1, sizeof(graph));
for(int i=0; i < num; ++i)
{
scanf("%s",row);
for(int j=0; j < num; ++j)
{
if(row[j] == '.')
{
graph[i+1][j+1] = 0;
}
}
}
maxnum = 0;
dfs(0,0);
printf("%d\n",maxnum);
}
}
639UVa棋盘放车
最新推荐文章于 2019-11-23 11:46:39 发布