博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TYVJ P1030 乳草的入侵 Label:跳马问题
阅读量:5806 次
发布时间:2019-06-18

本文共 1991 字,大约阅读时间需要 6 分钟。

背景

USACO OCT09 6TH

描述

Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草。可惜天不从人愿,他在植物大战人类中败下阵来。邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地。
草地像往常一样,被分割成一个高度為Y(1 <= y <= 100), 宽度為X(1 <= x <= 100)的直角网格。(1,1)是左下角的格(也就是说坐标排布跟一般的X,Y坐标相同)。乳草一开始佔领了格(Mx,My)。每个星期,乳草传播到已被乳草佔领的格子四面八方的每一个没有很多石头的格(包括垂直与水平相邻的和对角线上相邻的格)。1周之后,这些新佔领的格又可以把乳草传播到更多的格裡面了。
Bessie想要在草地被乳草完全佔领之前尽可能的享用所有的牧草。她很好奇到底乳草要多久才能佔领整个草地。如果乳草在0时刻处於格(Mx,My),那麼还在那个时刻它们可以完全佔领入侵整片草地呢(对给定的数据总是会发生)?
草地由一个图片表示。"."表示草,而"*"表示大石。比如这个X=4, Y=3的例子。
     ....
     ..*.
     .**.
如果乳草一开始在左下角(第1排,第1列),那麼草地的地图将会以如下态势发展:
乳草会在4星期后佔领整片土地。

输入格式

* 第一行: 四个由空格隔开的整数: X, Y, Mx, My
* 第2到第Y+1行: 数据的第y+1行由X个字符("."表示草地,"*"表示大石),描述草地的
第(Y+2-y)行。

输出格式

* 第一行: 一个单独的整数表示最后一个不是大石块的格子被乳草佔领的星期数。

测试样例1

输入

4 3 1 1 
.... 
..*. 
.**.

输出

4

代码

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 int N,M,P,dep,ans,X,Y,map[105][105], 8 dx[15]={ 1,1,1, 0,0,-1,-1,-1}, 9 dy[15]={-1,0,1,-1,1,-1, 0, 1};10 char juzhen[105][105];11 struct cc{12 int x,y;13 }q1;14 queue
que; 15 16 17 void init_(){18 memset(map,-1,sizeof(map));19 scanf("%d%d%d%d",&N,&M,&X,&Y);//M行 N列 20 for(int i=M;i>=1;i--){21 scanf("%s",juzhen[i]+1);22 }23 q1.x=Y;q1.y=X;24 que.push(q1);25 map[Y][X]=0;26 }27 28 void print(){29 for(int i=1;i<=M;i++){30 for(int j=1;j<=N;j++){31 printf("%-3d",map[i][j]);32 }33 puts("");34 }35 puts("");36 }37 38 int main(){39 // freopen("01.txt","r",stdin);40 init_();41 42 while(!que.empty()){43 q1=que.front();que.pop();44 for(int i=0;i<8;i++){45 int xx=q1.x+dx[i],yy=q1.y+dy[i];46 if(xx<1||yy<1||xx>M||yy>N) continue;47 if(juzhen[xx][yy]=='*') continue;48 if(map[xx][yy]>=0) continue;49 cc q2;q2.x=xx;q2.y=yy;50 que.push(q2);51 map[xx][yy]=map[q1.x][q1.y]+1;52 ans=max(ans,map[xx][yy]);53 }54 // print();55 }56 printf("%d\n",ans);57 return 0;58 }

这输入方式我整个人都不好了,n和m搞混,x和y搞混,

样例还如此飘逸,根本不知道x和y反了!!!

转载于:https://www.cnblogs.com/radiumlrb/p/5797027.html

你可能感兴趣的文章
几种判断一个整数是否是2的n次方幂的方法
查看>>
Android真机测试、乐视手机启用开发者模式
查看>>
MySQL更改relay-bin名称导致同步停止的解决办法
查看>>
utf-8编码
查看>>
在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序【转】
查看>>
【Java】创建线程对象两种方式
查看>>
1083 Cantor表
查看>>
字符集对应表
查看>>
apicloud,aliyunlive,测试成功
查看>>
判断一个数是否含有相同的数字
查看>>
Logstash读写性能调整优化
查看>>
通达信版F10检索工具下载
查看>>
零基础学python-2.17 文件、open()、file()
查看>>
菜鸟学Java(二十二)——又一次认识泛型
查看>>
也谈设计模式,架构,框架和类库的区别
查看>>
Qt——布局管理器
查看>>
RIP协议
查看>>
[Android基础]Android中使用HttpURLConnection
查看>>
几种Tab的实现方法
查看>>
grid网格的流动一
查看>>