C. 袋鼠妈妈找孩子

来源:互联网 发布:mysql不能输入中文 编辑:程序博客网 时间:2024/06/10 06:12
C. 袋鼠妈妈找孩子Time limit per test: 1.5 secondsTime limit all tests: 10.0 secondsMemory limit: 256 megabytesAccept / Submit: 41 / 172袋鼠妈妈找不到她的孩子了。她的孩子被怪兽抓走了。袋鼠妈妈现在在地图的左上角,她的孩子在地图第 x 行第 y 列的位置。怪兽想和袋鼠妈妈玩一个游戏:他不想让袋鼠妈妈过快地找到她的孩子。袋鼠妈妈每秒钟可以向上下左右四个方向跳一格(如果没有墙阻拦的话),怪兽就要在一些格子中造墙,从而完成一个迷宫,使得袋鼠妈妈能够找到她的孩子,但最快不能小于 k 秒。请设计这样一个迷宫。Input第一行两个整数 n,m (1≤n,m≤8),表示地图的总行数和总列数。第二行三个整数 x,y,k (1≤x≤n,1≤y≤m,x+y>1)。Output输出一个地图,应正好 n 行 m 列。用 . 表示空地,用 * 表示墙。袋鼠妈妈所在的位置和孩子所在的位置用 . 表示。数据保证有解。Examplesinput2 61 3 4output.*.***......

如果到达了(i,j)
显然 在(i,j)的上下左右 只能有一个点是已经到达过的(就是从该点到达(i,j)的)
加上这条件xjb搜一下 搜索到刚好第k步找到 然后就A了…

#include<stdio.h>#include <iostream>#include<stdlib.h>#include<algorithm>#include<vector>#include<deque>#include<map>#include<set>#include<queue>#include<math.h>#include<string.h>#include<string>using namespace std;#define ll long long#define pii pair<int,int>const int inf = 1e9 + 7;const int N = 10+5;bool vis[N][N];int dirX[]={0,0,-1,1};int dirY[]={-1,1,0,0};int n,m;int x,y,k;bool flag;void getAns(){    for(int i=0;i<n;++i){        for(int j=0;j<m;++j){            if(vis[i][j]==1){                putchar('.');            }            else{                putchar('*');            }        }        putchar('\n');    }}bool check(int i,int j){    int visNum=0;    for(int d=0;d<4;++d){        int ni=dirX[d]+i;        int nj=dirY[d]+j;        if(ni>=0&&nj>=0&&ni<n&&nj<m){            visNum+=vis[ni][nj];        }    }    return visNum<2;}void dfs(int i,int j,int steps){    vis[i][j]=1;    if(flag){        return;    }    if(x==i&&y==j){        if(steps>=k){            flag=1;            getAns();            return;        }        else{            vis[i][j]=0;            return;        }    }    for(int d=0;d<4;++d){        int ni=dirX[d]+i;        int nj=dirY[d]+j;        if(ni>=0&&nj>=0&&ni<n&&nj<m&&vis[ni][nj]==0&&check(ni,nj)){            dfs(ni,nj,steps+1);        }    }    vis[i][j]=0;}int main(){    //freopen("/home/lu/Documents/r.txt","r",stdin);    //freopen("/home/lu/Documents/w.txt","w",stdout);    while(~scanf("%d%d",&n,&m)){        scanf("%d%d%d",&x,&y,&k);        x-=1;        y-=1;        flag=0;        memset(vis,0,sizeof(vis));        dfs(0,0,0);    }    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信而富注册手机号码不用了怎么办 信而富本时段额度已放完怎么办 知道qq号密码账号忘了怎么办 扣扣绑定的手机号被别人用了怎么办 我的手机号被别人绑定了快手怎么办 微信密码忘记了没绑定手机号怎么办 扣扣绑定银行卡忘记密码了怎么办 扣扣忘记密码了又换手机号了怎么办 微信订阅号里有删除后的信息怎么办 申请微信公众号邮箱已被占用怎么办 公众号验证没有对公账户怎么办 qq密码忘记了怎么办手机绑定没有 我的扣扣怎么申诉都找不回来怎么办 装修装的不好又没有签合同怎么办 日本免税的零食不小心拆了怎么办 闲鱼同意买家退货了买家不退怎么办 手机里淘宝钱付了不发货怎么办 百度云下载手机储存空间不足怎么办 苹果8的照片储存空间满了怎么办 为什么下载的软件已停止运行怎么办 苹果手机刷机忘记注册邮箱了怎么办 刺激战场模拟器注册已达上限怎么办 用模拟器玩刺激战场注册上限怎么办 微信解除实名认证后退款怎么办 苹果为什么qq收消息有延迟怎么办 qq忘记密码手机号也换了怎么办 扣扣空间圈人时照片服务错误怎么办 删了qq好友怎么找回来怎么办 苹果5s语音控制打开了怎么办 lv迷你水桶包肩带长了怎么办 在香港买个lv包包过海关怎么办 国际快递手表被海关查应该怎么办 把档案放到人才市场后报到证怎么办 皮表带带久了有异味怎么办 英语中用词不当和拼写错误怎么办 爬楼梯的购物车车轮坏了怎么办? 帮别人买东西不给我钱怎么办 老师念错名字有同学指出来你怎么办 老公婚前买的房子婆婆想霸占怎么办 我想查我的基金收益情况怎么办 儿童票买好了但大人退票了怎么办