HDU 1010——Tempter of the Bone

来源:互联网 发布:大数据修炼系统女主 编辑:程序博客网 时间:2024/06/06 05:26

深搜

注意剪枝。

#include<iostream>#include<cstdio>using namespace std;int flag;char map[10][10];int X,Y,t;int n,m;int dir[4][2]={1,0,-1,0,0,1,0,-1};void dfs(int x,int y,int time){if(x==X&&y==Y&&time==t){flag=1;return;}if(time>t)return;if((t-time)%2!=(abs(X-x)+abs(Y-y))%2)return;if(flag)return;int i;for(i=0;i<4;i++){int u,v;u=dir[i][0]+x;v=dir[i][1]+y;if(u<n&&u>=0&&v<m&&v>=0&&map[u][v]!='X'){map[u][v]='X';dfs(u,v,time+1);map[u][v]='.';}}}int main(){int x,y;while(cin>>n>>m>>t&&(n||m||t)){int i,j;int k=0;for(i=0;i<n;i++){for(j=0;j<m;j++){cin>>map[i][j];if(map[i][j]=='.')k++;if(map[i][j]=='S'){x=i;y=j;map[i][j]='X';//注意}if(map[i][j]=='D'){X=i;Y=j;}}}if(t-1>k){cout<<"NO"<<endl;continue;}flag=0;dfs(x,y,0);if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}