广搜算法详解C++版Word文档格式.docx

上传人:b****0 文档编号:13444488 上传时间:2022-10-10 格式:DOCX 页数:16 大小:20.43KB
下载 相关 举报
广搜算法详解C++版Word文档格式.docx_第1页
第1页 / 共16页
广搜算法详解C++版Word文档格式.docx_第2页
第2页 / 共16页
广搜算法详解C++版Word文档格式.docx_第3页
第3页 / 共16页
广搜算法详解C++版Word文档格式.docx_第4页
第4页 / 共16页
广搜算法详解C++版Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

广搜算法详解C++版Word文档格式.docx

《广搜算法详解C++版Word文档格式.docx》由会员分享,可在线阅读,更多相关《广搜算法详解C++版Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

广搜算法详解C++版Word文档格式.docx

如果走不到,则输出NoAnswer!

样例输入

55

11111

11100

10001

00100

11101

41

54

样例输出

6

#include<

cstdio>

intxx[4]={1,-1,0,0};

intyy[4]={0,0,1,-1};

structss

{

intx,y,len;

}line[2000001];

intl,r,n,m,ans;

intmap[2001][2001];

boolv[2001][2001];

intmain()

scanf("

%d%d"

&

n,&

m);

for(inti=1;

i<

=n;

++i)

for(intj=1;

j<

=m;

++j)

%d"

map[i][j]);

intx1,x2,y1,y2;

x1,&

y1);

x2,&

y2);

l=0;

r=1;

line[1].x=x1;

line[1].y=y1;

v[x1][y1]=true;

while(l<

r)

{

++l;

inttex,tey;

for(inti=0;

4;

tex=line[l].x+xx[i];

tey=line[l].y+yy[i];

if(tex>

0&

&

tex<

=n&

tey>

tey<

=m)

if((map[tex][tey]==0)&

(!

v[tex][tey]))

++r;

line[r].x=tex;

line[r].y=tey;

line[r].len=line[l].len+1;

v[tex][tey]=1;

if(tex==x2&

tey==y2)

printf("

line[r].len);

return0;

}

}

NoAnswer!

"

);

}

2、迷宫(CODEVS1215)

题目描述Description

在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。

从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。

输入描述InputDescription

输入的第一行为一个整数m,表示迷宫的数量。

其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。

输出描述OutputDescription

输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。

样例输入SampleInput

1

7

s...##.

.#.....

.......

..#....

..#...#

###...#

......e

样例输出SampleOutput

YES

程序代码

cstdlib>

intm,n;

chara[20][20];

intsx,sy,ex,ey;

booltf;

intfx[4]={-1,0,0,1};

intfy[4]={0,-1,1,0};

structnode{intx,y,d;

};

nodeq[400];

intst,ed;

voidbfs()

q[1].x=sx;

q[1].y=sy;

q[1].d=0;

st=1;

ed=2;

while(st!

=ed)

inttx,ty;

for(inti=0;

i++)

{

tx=q[st].x+fx[i];

ty=q[st].y+fy[i];

if(tx>

=0&

tx<

n&

ty>

ty<

a[tx][ty]=='

.'

{

if(tx==ex&

ty==ey)

{

tf=true;

return;

}

q[ed].x=tx;

q[ed].y=ty;

q[ed].d=q[st].d+1;

a[tx][ty]='

#'

;

ed++;

}

}

st++;

intmain()

while(m!

=0)

m--;

tf=false;

scanf("

n);

n;

scanf("

%s"

a[i]);

for(intj=0;

j++)

if(a[i][j]=='

s'

){sx=i;

sy=j;

a[i][j]='

e'

){ex=i;

ey=j;

bfs();

if(tf==true)printf("

YES\n"

elseprintf("

NO\n"

3、紧急援救(RQNOJ34)

话说2007年8月5日,Mike博士神秘失踪了,最后发现是被外星人绑架了,幸好外星人目前还是在地球上活动,并且知道外星人不了解地球,幸好,Milk博士身上有无线信号发送装置,我们终于确定了他的位置,必须赶快到那里去救他。

根据无线信号发送装置,我们确定出一张地图,为了尽快寻找到Mike博士,于是这个光荣和艰巨的任务便交给了你,编写程序,通过使用一张地图帮助研究所确定从研究所出发找到Mike博士最短距离。

n<

=1000

第一行为n

第二行为n*n的地图(其中0表示通路,1表示死路)

最后两行每行有两个数字,分别表示研究所的坐标和博士信号所在的位置。

一个数字k,表示从研究所出发找到Milk博士的最短距离。

10

010*******

0001110010

1000000001

1000100011

0000101100

1000001100

1001010011

0000010100

1001000001

17

102

14

参考程序:

#include<

iostream>

cstring>

usingnamespacestd;

intn;

inta[1001][1001];

intxp[4]={0,0,-1,1},yp[4]={1,-1,0,0};

intxx,yy;

structdata{

intx,y,step;

}dl[1000000];

intpr(intx,inty)

if(x==xx&

y==yy)return1;

elsereturn0;

intpd(intx,inty)

if(x>

=1&

y>

x<

y<

a[x][y]==0)returntrue;

elsereturnfalse;

intx,y,t=1,w=1;

cin>

>

x>

xx>

yy;

a[x][y]=1;

dl[t].x=x;

dl[t].y=y;

dl[t].step=0;

if(pr(x,y))

{cout<

<

dl[t].step<

endl;

return;

while(t<

=w)

for(inti=0;

{x=dl[t].x+xp[i];

y=dl[t].y+yp[i];

if(pd(x,y))

a[x][y]=1;

w++;

dl[w].x=x;

dl[w].y=y;

dl[w].step=dl[t].step+1;

if(pr(x,y)){cout<

dl[w].step<

return;

t++;

chars[1001];

for(inti=1;

s);

for(intj=0;

a[i][j+1]=s[j]-'

0'

bfs();

//system("

pause"

4、武士风度的牛(codevs1411)

农民John有很多牛,他想交易其中一头被Don称为TheKnight的牛。

这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法)。

虽然这头神奇的牛不能跳到树上和石头上,但是它可以在牧场上随意跳,我们把牧场用一个x,y的坐标图来表示。

这头神奇的牛像其它牛一样喜欢吃草,给你一张地图,上面标注了TheKnight的开始位置,树、灌木、石头以及其它障碍的位置,除此之外还有一捆草。

现在你的任务是,确定TheKnight要想吃到草,至少需要跳多少次。

TheKnight的位置用'

K'

来标记,障碍的位置用'

*'

来标记,草的位置用'

H'

来标记。

这里有一个地图的例子:

      11|..........

      10|....*.....

      9|..........

      8|...*.*....

      7|.......*..

      6|..*..*...H

      5|*.........

      4|...*...*..

      3|.K........

      2|...*.....*

      1|..*....*..

      0------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1