📄 1405 fire net.cpp
字号:
#include <cstdio>
using namespace std;
char map[4][4];
int n,max;
inline bool isOK(int i,int j)
{
int k;
for(k=i;k<n;k++)
if(map[k][j]=='X')
break;
else if(map[k][j]!='.')
return false;
for(k=i;k>=0;k--)
if(map[k][j]=='X')
break;
else if(map[k][j]!='.')
return false;
for(k=j;k<n;k++)
if(map[i][k]=='X')
break;
else if(map[i][k]!='.')
return false;
for(k=j;k>=0;k--)
if(map[i][k]=='X')
break;
else if(map[i][k]!='.')
return false;
return true;
}
int dfs(int step)
{
int i,j,k;
max= step > max ? step:max;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(map[i][j]=='.' && isOK(i,j))
{
map[i][j]=step;
dfs(step+1);
map[i][j]='.';
}
}
return max;
}
int main()
{
int i,j;
char ch;
while(scanf("%d",&n)==1 && n!=0)
{
getchar();
for(i=0;i<n;i++)
gets(map[i]);
max=0;
dfs(0);
printf("%d\n",max);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -