WUST 2090 HLD与停车场(bfs||dfs||暴力模拟||巧妙思维)

来源:互联网 发布:为知笔记企业版 编辑:程序博客网 时间:2024/05/22 12:05

2090: HLD与停车场

Time Limit: 1 Sec  Memory Limit: 128 MB  64bit IO Format: %lld
Submitted: 21  Accepted: 6
[Submit][Status][Web Board]

Description

       HLD最近迷上了保加利亚妖王,这天他打算去河北省参加保加利亚妖王的演唱会,但是很不幸他被保加利亚妖王的死对头比利王的手下王大锤抓住了。

 

       由于和王大锤一起执行任务的龙卷风这天生病请假了,王大锤给HLD布置了一个任务,如果能完成这个任务就放他走,否则就会带回去和比利王搞一辈子比利emmmmm,无奈之下HLD只能接下了这个任务--------龙卷风摧毁停车场。

Input

王大锤会告诉HLD两个数字n,m,分别代表地图的长和宽(2<=n<=20,2<=m<=20),会给HLD一张n*m的图,”.”代表路,”*”号代表停车场的边缘(图只包含这两个字符)

       任意两个停车场不相邻,停车场都是完整的矩形,(可以看样例了解一下),然后给一个要求摧毁的数字x(x<100),保证任意停车场的边长不小于2,数据为多组输入。

Output

现在让HLD在摧毁所有停车场后写一份摧毁报告,如果达到了要求就写上:”乌鸦坐飞机”,否则写”boy next door!”(均不包括引号)

  现在HLD一股脑把所有的停车场摧毁了,但是忘记记录下来了,你能告诉他他应该写下什么吗?

Sample Input 

3 6..***...*.*...***.15 6..**....**........***...***...3



Sample Output


乌鸦坐飞机boy next door!


HINT

 样例一给出的图中有一个停车场


样例二中有两个停车场


比如可能会出现:


**


**


也表示一个停车场


****


*..*


*..*


****


也表示一个停车场

Author

hjy

[Submit][Status][Web Board]


题解:

第一次出题,新生杯比赛的时候一小时都没人尝试,然后加了一组样例和hint解释以后就有人a了。。感觉不是很难啊,我分配的是出简单题的qwq

思路:

 这题的做法很多,可以二重循环遍历图,遇到星号就矩形数加一,暴力分别扫上边,左边,下边和右边,扫到了星号就消掉,这里考察模拟能力,然后更高级一些的解法可以bfs和dfs,巧妙的做法是二重循环遍历图,遇到星号判断它的左边和上边,如果都是点或者边界那就矩形数加一 
标程:
#include<stdio.h>int judge(char s[][25],int x,int y){    if((x-1<0||s[x-1][y]=='.')&&(y-1<0||s[x][y-1]=='.'))        return 1;    return 0;}int main(){    //freopen("datain.txt","r",stdin);    //freopen("dataout.txt","w",stdout);    char s[25][25];    int n,m,i,j,a,b,d,ans;    while(scanf("%d%d",&n,&m)!=EOF)    {        ans=0;        for(i=0;i<n;i++)            scanf("%s",s[i]);        scanf("%d",&d);        for(i=0;i<n-1;i++)        {            for(j=0;j<m-1;j++)            {                if(s[i][j]=='*'&&judge(s,i,j))                {                    ans++;                }            }        }        if(ans>=d)            printf("乌鸦坐飞机\n");        else            printf("boy next door!\n");    }   return 0;}


阅读全文
0 0
原创粉丝点击