当前位置 : 主页 > 手机开发 > harmonyos >

hdu 1010 奇偶标记法

来源:互联网 收集:自由互联 发布时间:2023-08-26
http://acm.hdu.edu.cn/showproblem.php?pid=1010 我错了好几次,由于不懂奇偶标记法; 还有就是我敲代码失误太多; #includestdio.h #includestdlib.h #includestring.h #includemath.h #includealgorithm #includeiostream u


http://acm.hdu.edu.cn/showproblem.php?pid=1010

我错了好几次,由于不懂奇偶标记法;

还有就是我敲代码失误太多;

#include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #include<math.h>
 #include<algorithm>
 #include<iostream>
 using namespace std;


 bool flag;
 int Ex,Ey;
 int a[4][2]={0,1,0,-1,1,0,-1,0};
 bool Map[25][25];


 void DFS(int x,int y,int t)
 {
     if(flag)
         return;
     if(t==0&&x==Ex&&y==Ey)
     {
         flag=true;
         return;
     }
     int bx,by,s;
     s=t-abs(Ex-x)-abs(Ey-y);
         if(s<0||s&1)
             return;
     int i;
     for(i=0;i<4;i++)
     {
         bx=x+a[i][0];
         by=y+a[i][1];
         if(Map[bx][by])
         {
             Map[bx][by]=false;
             DFS(bx,by,t-1);
             Map[bx][by]=true;
         }
     }
 }
 int main()
 {
     int m,n,T;
     int i,j;
     char c;
     int x,y;
     while(scanf("%d%d%d",&m,&n,&T),(m+n+T))
     {
         flag=false;
         memset(Map,false,sizeof(Map));
         for(i=1;i<=m;i++)
             for(j=1;j<=n;j++)
             {
                 cin>>c;
                 if(c=='S')
                 {
                     x=i;
                     y=j;
                 }
                 if(c=='D')
                 {
                     Ex=i;
                     Ey=j;
                     Map[i][j]=true;
                 }
                 if(c=='.')
                     Map[i][j]=true;
             }
             DFS(x,y,T);
             if(flag)
                 printf("YES\n");
             else
                 printf("NO\n");
     }
     return 0;
 }
上一篇:hdu 1394 线段树
下一篇:没有了
网友评论