杭电 1045题 Fire Net
【摘要】 题目链接~~>
简单深度搜索,第一次做一次AC,第二次换了一种方法就找不出错误了!
search(x,y+1,t+1); s[x][y+1]='.';后面应该还有一个search(x,y+1,t);的调用;
代码(1):
#include<stdio.h>int n,max=0;char s[5][5];void dfs(int x,int y,in...
简单深度搜索,第一次做一次AC,第二次换了一种方法就找不出错误了!
search(x,y+1,t+1); s[x][y+1]='.';后面应该还有一个search(x,y+1,t);的调用;
代码(1):
#include<stdio.h>
int n,max=0;
char s[5][5];
void dfs(int x,int y,int q)
{
void search(int x,int y,int q);
int i,j;
int f=0;
for(i=x+1;i<n;i++)
if(s[i][y]=='X')break;
else if(s[i][y]=='Q'){f=1;break;}
for(j=y+1;j<n;j++)
if(s[x][j]=='X')break;
else if(s[x][j]=='Q'){f=1;break;}
for(i=x-1;i>=0;i--)
if(s[i][y]=='X')break;
else if(s[i][y]=='Q'){f=1;break;}
for(j=y-1;j>=0;j--)
if(s[x][j]=='X')break;
else if(s[x][j]=='Q'){f=1;break;}
if(f==0){s[x][y]='Q';q++;f=0;}
if(q>max)max=q;
search(x,y,q);
s[x][y]='.';
}
void search(int x,int y,int q)
{
int i,j;
if(y==n-1){x=x+1;y=-1;}
for(i=x;i<n;i++)
{ if(i!=x)y=-1;
for(j=y+1;j<n;j++)
if(s[i][j]=='.')
{
dfs(i,j,q);
}
}
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
max=0;
if(n==0)break;
for(i=0;i<n;i++)
scanf("%s",s[i]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(s[i][j]=='.')
{
dfs(i,j,0);
}
printf("%d\n",max);
}
return 0;
}
代码(2):
#include<stdio.h>
char s[5][5];
int max,n;
void search(int x,int y,int t)
{
int i,flag=0;
if(t>max)
max=t;
if(y==n)
{x++;y=0;}
if(x==n)
return ;
if(s[x][y]=='X')flag=1;
for(i=x+1;i<n;i++)
if(s[i][y]=='A')
{
flag=1;
break;
}
else if(s[i][y]=='X')
break;
for(i=x-1;i>=0;i--)
if(s[i][y]=='A')
{
flag=1;
break;
}
else if(s[i][y]=='X')
break;
for(i=y-1;i>=0;i--)
if(s[x][i]=='A')
{
flag=1;
break;
}
else if(s[x][i]=='X')
break;
for(i=y+1;i<n;i++)
if(s[x][i]=='A')
{
flag=1;
break;
}
else if(s[x][i]=='X')
break;
if(flag==0)
{
s[x][y]='A';
// printf("%d\n",t+1);
search(x,y+1,t+1);
s[x][y]='.';
search(x,y+1,t);
}
else
search(x,y+1,t);
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
max=0;
for(i=0;i<n;i++)
scanf("%s",s[i]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(s[i][j]=='.')
{
search(i,j,0);
}
printf("%d\n",max);
}
return 0;
}
文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nyist_zxp/article/details/9294039
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)