2017上海市高校程序设计邀请赛_C

来源:互联网 发布:python读取json文件 编辑:程序博客网 时间:2024/05/14 23:43

problem list
C 神奇怪兽在哪里

这里写图片描述

  • 签到题
  • 要求很宽泛,路径可以重叠
  • dfs遍历解决

#include <bits/stdc++.h>using namespace std;typedef long long           LL ;typedef unsigned long long ULL ;const int    maxn = 1000 + 10  ;const int    inf  = 0x3f3f3f3f ;const int    npos = -1         ;const double eps  = 1e-20      ;int n, m, si, sj, a[maxn][maxn], v[maxn][maxn];int dx[4]={-1,0,1,0};int dy[4]={0,-1,0,1};char c[maxn], d[4]={'U','L','D','R'};bool bound(int x, int y){    return (0<x)&&(x<=n)&&(0<y)&&(y<=m);}void dfs(int x, int y){    v[x][y]=1;    for(int i=0;i<4;i++){        int nx=x+dx[i];        int ny=y+dy[i];        if(bound(nx,ny) && !a[nx][ny] && !v[nx][ny]){            printf("%c",d[i]);            dfs(nx,ny);            printf("%c",d[(i+2)%4]);        }    }}int main(){    // freopen("in.txt","r",stdin);    // freopen("out.txt","w",stdout);    while(~scanf("%d %d",&n,&m)){        for(int i=1;i<=n;i++){            scanf("%s",c+1);            for(int j=1;j<=m;j++){                a[i][j]=(c[j]=='*');                v[i][j]=0;                if('P'==c[j]){                    si=i;                    sj=j;                }            }        }        dfs(si,sj);    }    return 0;}
阅读全文
0 0
原创粉丝点击