/*这道题我原本是将斜线迷宫扩大为原来的两倍,但是在这种情况下对于在斜的方向上的搜索会变的较容易出错,所以参考了别人的思路后将迷宫扩展为原来的3倍,这样就变成一般的迷宫问题了*/

 1 #include"iostream"
 2 #include"stdio.h"
 3 #include"algorithm"
 4 #include"cmath"
 5 #include"string.h"
 6 #include"ctype.h"
 7 #include"queue"
 8 #include"map"
 9 #define mx 300
10 using namespace std;
11 int w,h;
12 int maze[mx][mx];
13 char m;
14 int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
15 int visited[mx][mx];
16 int cnt;//记录圈的个数
17 int mxlen;//记录最长圈的长度
18 int len;//记录当前圈的长度
19 int flag;//标记是否构成圈
20 bool judge(int x,int y)
21 {
22 if(x>=0&&x<3*h&&y>=0&&y<3*w) return true;//判断点是否出界
23 else return false;
24 }
25 void dfs(int x,int y)
26 {
27 int k,dx,dy;
28 for(k=0;k<4;k++)
29 {
30 dx=x+dir[k][0];
31 dy=y+dir[k][1];
32 if(judge(dx,dy))
33 {
34 if(!visited[dx][dy]&&!maze[dx][dy])
35 {
36 visited[dx][dy]=1;
37 len++;
38 dfs(dx,dy);
39 }
40 }
41 else //边界上的点肯定不构成圈。。。
42 {flag=0;}
43 // cout<<len<<endl;
44 }
45 }
46 int main()
47 {
48 int i,j,k;
49 int count1=0;
50 while(cin>>w>>h,w||h)
51 {
52 count1++;
53 memset(maze,0,sizeof(maze));
54 for(i=0;i<h;i++)
55 {
56 getchar();
57 for(j=0;j<w;j++)
58 {
59 scanf("%c",&m);
60 if(m=='/')
61 {
62 maze[3*i+2][3*j]=1;maze[3*i+1][3*j+1]=1;maze[3*i][3*j+2]=1;
63 }
64 else
65 {
66 maze[3*i][3*j]=1;maze[3*i+1][3*j+1]=1;maze[3*i+2][3*j+2]=1;
67 }
68 }
69 }
70 for(i=0;i<3*h;i++)
71 for(j=0;j<3*w;j++)
72 {visited[i][j]=maze[i][j];}
73 mxlen=0;
74 cnt=0;
75 for(i=0;i<3*h;i++)
76 {
77 for(j=0;j<3*w;j++)
78 {
79 if(maze[i][j]==0&&!visited[i][j])
80 {
81 len=1;
82 flag=1;
83 visited[i][j]=1;
84 dfs(i,j);
85 if(flag)
86 {
87 cnt++;
88 if(len>mxlen) mxlen=len;
89 }
90 }
91 }
92 }
93 cout<<"Maze #"<<count1<<":"<<endl;
94 if(cnt==0) cout<<"There are no cycles."<<endl<<endl;
95 else
96 cout<<cnt<<" Cycles; "<<"the longest has length "<<mxlen/3<<'.'<<endl<<endl;
97 }
98 return 0;
99 }

View Code

转载于:https://www.cnblogs.com/acm-jing/p/4245504.html

uva705--slash maze相关推荐

  1. TYUT-A专题题解(二)

    TYUT-A专题题解(一) TYUT-A专题题解(二) 36暴力枚举 AOJ0008 Sum of 4 Integers[暴力]_海岛Blog-CSDN博客 HDU1407 测试你是否和LTC水平一样 ...

  2. AOAPC I: Beginning Algorithm Contests 题解

    AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...

  3. ICPC程序设计题解书籍系列之八:(美)斯基纳等:《挑战编程-程序设计竞赛训练手册》

    S书<挑战编程--程序设计竞赛训练手册>题目一览 1 Getting Started UVA100 POJ1207 HDU1032 The 3n + 1 problem[水题] - 海岛B ...

  4. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  5. UVa Online Judge 工具網站

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

  6. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  7. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  8. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  9. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  10. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

最新文章

  1. pelco-d协议数据解析示例
  2. 基于visual Studio2013解决C语言竞赛题之1081shell排序
  3. SQLSERVER 的联接查询写法
  4. 154. 寻找旋转排序数组中的最小值 II(有手就行)
  5. python多分支结构实例_JS优化多分支结构(经典)
  6. 80端口未占用,apache无法启动解决办法
  7. 涨知识!Google 黑客常用搜索语句一览 | 原力计划
  8. js中contains()方法的了解
  9. 《完整部署 OCS-NG》
  10. 【多媒体封装格式详解】---MKV【3】完
  11. 架构之美第一章-如何看到一滴水的美丽
  12. hustoj 忘记admin密码的解决方案
  13. 北理珠大学生体质测试及健康状况的分析
  14. c语言 获取中文首字母,C语言获取汉字拼音首字母
  15. 初学者必读VRay 2.0材质设置(2)——反射材质的表现
  16. Beer Bill(签到题)
  17. [BZOJ4466][Jsoi2013]超立方体
  18. 阿里又上美国“售假黑名单” 是被故意抹黑了吗
  19. fatal: Could not set SSL backend to ‘schannel‘:already set
  20. 微信WeUI扩展组件

热门文章

  1. 大数据小白系列——HDFS(1)
  2. elasticsearch 5.1 问题 ubuntu
  3. windows下apache报错The requested operation has failed解决方法
  4. Scala基础 - _root_ package的作用
  5. java操作redis简单学习3
  6. Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
  7. 解析邮件归档技术 保护企业邮件安全(三)
  8. Hibernate type 与java 和 数据库类型对应
  9. 轻松学PHP编程 源代码
  10. bzoj2460: [BeiJing2011]元素