HDU 2821 Pusher

来源:互联网 发布:ovd后缀名是什么软件 编辑:程序博客网 时间:2024/06/06 07:08

dfs

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <map>#include <queue>#include <ctime>#include <set>#define ll long long#define MK make_pair#define PB push_back#define SZ(x) ((int)(x).size())#define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++ )using namespace std;char g[30][30];string op="UDLR",ansop;int sum=0,a[30][30],n,m,ansx,ansy,nn,dx[]={-1,1,0,0},dy[]={0,0,-1,1};bool ok;inline bool in(int x,int y){    return x<n&&x>=0&&y<m&&y>=0;}void dfs(int x,int y,int cnt,int ind,string opp){    if(!cnt){        nn=ind;        ok=true;        ansop=opp;        return;    }    if(ok) return;    for(int i=0;i<4;i++){        int nx=x+dx[i],ny=y+dy[i];        if(!in(nx,ny)||a[nx][ny]) continue;        while(in(nx,ny)&&!a[nx][ny]) nx+=dx[i],ny+=dy[i];        if(!in(nx,ny)) continue;        int t=a[nx][ny];        a[nx][ny]=0;        if(!in(nx+dx[i],ny+dy[i])) dfs(nx,ny,cnt-t,ind+1,opp+op[i]);        else{            a[nx+dx[i]][ny+dy[i]]+=t-1;            dfs(nx,ny,cnt-1,ind+1,opp+op[i]);        }        a[nx][ny]=t;        if(in(nx+dx[i],ny+dy[i])) a[nx+dx[i]][ny+dy[i]]-=t-1;    }}int main(){#ifndef ONLINE_JUDGE    freopen("a.in","r",stdin);    freopen("a.out","w",stdout);#endif    while(cin>>m>>n){        for(int i=0;i<n;i++) scanf("%s",g[i]);        sum=0;ansop="";        for(int i=0;i<n;i++)             for(int j=0;j<m;j++){                if(g[i][j]=='.') a[i][j]=0;                else a[i][j]=g[i][j]-'a'+1;                sum+=a[i][j];            }        ok=false;        for(int i=0;i<n;i++){            for(int j=0;j<m;j++)                if(g[i][j]=='.'){                    dfs(i,j,sum,0,"");                    if(ok){                        ansx=i;ansy=j;                        break;                    }                }            if(ok) break;        }        cout<<ansx<<endl;        cout<<ansy<<endl;        cout<<ansop<<endl;    }    return 0;}


 

原创粉丝点击