https://vjudge.net/problem/UVA-707
题解:这个题目是一个dfs,题意是判断小偷的位置,我们可以对小偷在1时刻的所有位置进行搜素,通过dfs和回溯判断这个点是否可到达 t 时刻小偷可以在的点,如果可以,计数,如果没有一个起点能到,则小偷已经逃离,否则小偷还可能在城里,在城内我们增判断是否可以确定小偷在某时刻的位置,如果唯一,则输出他在那个时刻的位置,如果不能确定小偷任意时刻的位置,我们就输出无法确定。
代码如下

~~~c++
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
int vis[105][105][105];
int vis1[105][105][105];
int cnt;
int dy[10]={-1,0,1,0,0};
int dx[10]={0,1,0,-1,0};
int w,h,T;
int  dfs(int r,int c,int t)
{   if(t==T)return vis[r][c][t]=1;if(vis[r][c][t]!=-1) return vis[r][c][t];for(int i=0;i<5;i++){int fx=r+dx[i];int fy=c+dy[i];if(vis1[fx][fy][t+1]){if(dfs(fx,fy,t+1)==1)vis[r][c][t]=1;}} if(vis[r][c][t]==-1)return vis[r][c][t]=0;return vis[r][c][t];
}
inline void init()
{cnt=0;memset(vis1,0,sizeof(vis1));//记得清空数组 memset(vis,-1,sizeof(vis));for(int i=1;i<=h;i++)for(int j=1;j<=w;j++)for(int k=1;k<=T;k++)vis1[i][j][k]=1;}
int main()
{int n,tt,x1,y1,x2,y2;int l=0;while(scanf("%d%d%d",&w,&h,&T)){l++;if(w+h+T==0)return 0;init();scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d%d%d",&tt,&y1,&x1,&y2,&x2);for(int j=x1;j<=x2;j++){for(int k=y1;k<=y2;k++){vis1[j][k][tt]=0;}}}for(int i=1;i<=h;i++){for(int j=1;j<=w;j++){if(vis1[i][j][1]==1&&dfs(i,j,1)==1){cnt++;} }}printf("Robbery #%d:\n",l);if(cnt==0)printf("The robber has escaped.\n");else {int flag=0;for(int i=1;i<=T;i++){int ll=0,r,c;for(int j=1;j<=h;j++){for(int k=1;k<=w;k++){if(vis[j][k][i]==1)ll++,r=j,c=k;}}if(ll==1){flag=1;printf("Time step %d: The robber has been at %d,%d.\n",i,c,r);//是c,r,不是r,c; }}if(flag==0){printf("Nothing known.\n");}}printf("\n");}return 0;
}

Robbery UVa-707相关推荐

  1. UVA 707 - Robbery

    搜啊搜~~~~~~~ 1.用记忆化搜索 来搜答案,否则搜不完~ 2.题目理解起来有困难....sad 讲:如果最后没有找到任何时间任何地点可能有贼,说明他跑掉了 除了上面这种情况,如果在所有时间里都同 ...

  2. uva 707(记忆化搜索)

    题意:在一个方阵中,一个强盗犯要逃跑.你是警察要去抓他,现在你手上有若干线索他们会告诉你第i时刻一个方阵中他们没有看见强盗.在t秒后全部道路会封锁.让你通过线索来判断是不是能够找到小偷在某一秒的位置. ...

  3. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  4. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  5. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  6. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  7. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  8. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  9. UVa 11174 - Stand in a Line

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  10. UVa 10112 - Myacm Triangles

    UVa第一卷最后一题. 求内部不含点并且面积最大的三角形. 暴力. 代码如下: 1 #include<iostream> 2 #include<cstdio> 3 #inclu ...

最新文章

  1. 【开源方案共享】ORB-SLAM3开源啦!
  2. Oracle 添加RAC数据库集群节点(一)
  3. Left join后用and和where的区别
  4. Silverlight 应用 WCF RIA Services 在 IIS6 部署问题总结
  5. linux chmod命令参数及用法详解--文件文件夹权限设定命令
  6. 动手学深度学习Pytorch Task03
  7. HDU 4707 Pet 邻接表实现
  8. Ubuntu(Linux)使用微信的方法
  9. css 好看滚动条样式大全,CSS 个性化滚动条样式
  10. 1000年出现了哪些闰年C语言,C语言判断“1000年―2000年”之间的闰年
  11. 基于WIZ811MJ的Arduino网络恒温器
  12. python编程入门视频教程-PYTHON编程从0到1(视频教学版)
  13. Java官方教程目录2021最新版
  14. python flask 微信小程序_python-flask微信小程序搭建
  15. 小米兰亭pro ttf_探索 让未来多一种可能 小米5G新品发布会直播
  16. 李琦自曝女儿不是亲生 但丝毫不影响家庭的美满幸福
  17. 国内某公司员工贩卖客户信息,造成10万余条信息泄露
  18. 前端自动化开发工作流模板
  19. 精选汇总文章2019-03-30
  20. 搭建Mavn私服-nexus资源仓库指南

热门文章

  1. leetcode 974. 和可被 K 整除的子数组 详解
  2. grafana登录失败无法从cookie中获取用户信息
  3. 快手如何快速涨粉到10000
  4. C-获得文件大小并动态申请内存屏幕打印文件内容小程序
  5. 如何在中国制造网(made-in-china)上做生意
  6. 【计算机组成原理】真值与机器值小数原码与整数原码定义及举例
  7. JAVA TIME API总结
  8. 小正数,避免极小截断误差
  9. 连续时间傅里叶变换的共轭与共轭对称性(详细推导)
  10. 去中心化结构的相关理解