现在的位置: 首页 > 综合 > 正文

hdu 1045 Fire Net

2018年12月28日 ⁄ 综合 ⁄ 共 588字 ⁄ 字号 评论关闭

布置尽可能多的碉堡,儿碉堡之间不会互相摧毁

 

 

 

#include<stdio.h>
int m,n;
char map[4][4];
int judge(int x,int y)
{
    int i;
    if(map[x][y]=='X')return 0;
    for(i=x-1;i>=0;i--)
    {
        if(map[i][y]=='o')
            return 0;
        if(map[i][y]=='X')
            break;
    }
    for(i=y-1;i>=0;i--)
    {
        if(map[x][i]=='o')
            return 0;
        if(map[x][i]=='X')
            break;
    }
    return 1;
}
void DFS(int k,int count)
{
    int x,y;
    if(k==n*n)
    {
        if(count>m)
        {m=count;return;}
        
    }
    else
    {
     x=k/n;
     y=k%n;
     if(judge(x,y))
     {
         map[x][y]='o';
         DFS(k+1,count+1);
         map[x][y]='.';
     }
     DFS(k+1,count);
    }
}
int main()
{
    int i,j;
    while(scanf("%d",&n),n)
    {
        getchar();
         for(i=0;i<n;i++)
         {
             for(j=0;j<n;j++)
             scanf("%c",&map[i][j]);
             getchar();
         }
             m=0;
             DFS(0,0);
             printf("%d\n",m);
    }
    return 0;
}

 

抱歉!评论已关闭.