奇偶剪枝
来源:互联网 发布:英雄联盟源码 编辑:程序博客网 时间:2024/05/21 09:35
经典小狗捡骨头
#include<bits/stdc++.h>using namespace std;char a[10][10];int sx,sy,ex,ey;int dir[4][2]={0,1,1,0,0,-1,-1,0};void dfs(int x,int y,int time);int book[10][10],n,m,flag,t;int main (){ while(1) { scanf("%d %d %d",&n,&m,&t); getchar(); if(n==0||m==0) break; int i,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%c",&a[i][j]); if(a[i][j]=='S') { sx=i; sy=j; } if(a[i][j]=='D') { ex=i; ey=j; } } getchar(); } flag=0; memset(book,0,sizeof(book)); book[sx][sy]=1; dfs(sx,sy,0); if(flag==1) printf("YES\n"); else printf("NO\n"); }}void dfs(int x,int y,int time){ int tx,ty; if(flag==1) return; if(x==ex&&y==ey) { if(time==t) { flag=1; return; } } int i; if(t-time<abs(ex-x)+abs(ey-y)||(t-time-abs(ex-x)-abs(ey-y))%2==1) return; for(i=0;i<4;i++) { tx=x+dir[i][0]; ty=y+dir[i][1]; if(tx<0||ty<0||tx>=n||ty>=m) continue; if(a[tx][ty]!='X'&&book[tx][ty]==0) { book[tx][ty]=1; // printf("%d %d %d\n",tx,ty,time); dfs(tx,ty,time+1); book[tx][ty]=0; } }}
阅读全文
0 0
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- 奇偶剪枝
- DFS中的奇偶剪枝
- DFS中的奇偶剪枝
- 搜索中的记录步数
- Java高级部分--线程重点总结
- 手把手教你Tiny4412 Android5.0 定制 按下开发板上的按键通过广播发送到应用层
- Android 高级控件(三)
- Tomcat 7.0多端口配置
- 奇偶剪枝
- 巡视整改:北京大学 pk 清华大学
- Linux驱动学习笔记----------触摸屏驱动
- 【Gradle】Gradle的安装与配置
- CMD命令结果保存至文本TXT
- 数学建模--迪克斯特拉( Dijkstra)算法
- 秋实大哥与小朋友 UESTC
- Vue中使用Froala Editor时,外部方法调用html.insert()插入内容到光标最后停留位置功能实现
- 基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控