C. 袋鼠妈妈找孩子

C. 袋鼠妈妈找孩子
Time limit per test: 1.5 seconds
Time limit all tests: 10.0 seconds
Memory limit: 256 megabytes
Accept / 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 列。

用 . 表示空地,用 * 表示墙。袋鼠妈妈所在的位置和孩子所在的位置用 . 表示。

数据保证有解。

Examples
input
2 6
1 3 4
output
.*.***
......

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

#include
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;
#define ll long long
#define pii pair

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;ifor(int j=0;jif(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&&nireturn 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&&ni0&&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;
}

你可能感兴趣的:(C. 袋鼠妈妈找孩子)