题意:求一个图中只有一个90°拐点的路的最大长度。

分析:枚举每一个为‘.’的点,求出以该点为拐点的八种路中的最大长度,再比较所有点,得出最大长度即可。

如上样例,这样是个90°的角...

注意:最多只有一个拐点,但是通过枚举每一个点的方法,可以在枚举到一条没有拐点的路的端点处时计算出这条路的长度,所以不用特判平角的情况。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<cctype>
  5. #include<cmath>
  6. #include<iostream>
  7. #include<sstream>
  8. #include<iterator>
  9. #include<algorithm>
  10. #include<string>
  11. #include<vector>
  12. #include<set>
  13. #include<map>
  14. #include<stack>
  15. #include<deque>
  16. #include<queue>
  17. #include<list>
  18. #define Min(a, b) a < b ? a : b
  19. #define Max(a, b) a < b ? b : a
  20. typedef long long ll;
  21. typedef unsigned long long llu;
  22. const int INT_INF = 0x3f3f3f3f;
  23. const int INT_M_INF = 0x7f7f7f7f;
  24. const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
  25. const ll LL_M_INF = 0x7f7f7f7f7f7f7f7f;
  26. const int dr[] = {, , -, };
  27. const int dc[] = {-, , , };
  28. const double pi = acos(-1.0);
  29. const double eps = 1e-;
  30. const int MOD = 1e9 + ;
  31. const int MAXN = + ;
  32. const int MAXT = + ;
  33. using namespace std;
  34. char s[MAXN][MAXN];
  35. int a[MAXN];
  36. int N;
  37. int solve(int a, int b){
  38. int cnt[];
  39. memset(cnt, , sizeof cnt);
  40. for(int i = b - ; i >= ; --i){//从该点向左走
  41. if(s[a][i] == '.') ++cnt[];
  42. else break;
  43. }
  44. for(int i = a - , j = b - ; i >= && j >= ; --i, --j){//从该点向左上走,以下按顺时针依次求
  45. if(s[i][j] == '.') ++cnt[];
  46. else break;
  47. }
  48. for(int i = a - ; i >= ; --i){
  49. if(s[i][b] == '.') ++cnt[];
  50. else break;
  51. }
  52. for(int i = a - , j = b + ; i >= && j < N; --i, ++j){
  53. if(s[i][j] == '.') ++cnt[];
  54. else break;
  55. }
  56. for(int i = b + ; i < N; ++i){
  57. if(s[a][i] == '.') ++cnt[];
  58. else break;
  59. }
  60. for(int i = a + , j = b + ; i < N && j < N; ++i, ++j){
  61. if(s[i][j] == '.') ++cnt[];
  62. else break;
  63. }
  64. for(int i = a + ; i < N; ++i){
  65. if(s[i][b] == '.') ++cnt[];
  66. else break;
  67. }
  68. for(int i = a + , j = b - ; i < N && j >= ; ++i, --j){
  69. if(s[i][j] == '.') ++cnt[];
  70. else break;
  71. }
  72. int sum = ;
  73. for(int i = ; i < ; ++i){
  74. sum = Max(sum, cnt[i] + cnt[(i + ) % ] + );
  75. }
  76. return sum;
  77. }
  78. int main(){
  79. while(scanf("%d", &N) == ){
  80. if(N == ) return ;
  81. memset(s, , sizeof s);
  82. memset(a, , sizeof a);
  83. for(int i = ; i < N; ++i){
  84. scanf("%s", s[i]);
  85. }
  86. int cnt = ;
  87. for(int i = ; i < N; ++i){
  88. for(int j = ; j < N; ++j){
  89. if(s[i][j] == '.'){
  90. a[cnt++] = solve(i, j);
  91. }
  92. }
  93. }
  94. sort(a, a + cnt);
  95. printf("%d\n", a[cnt - ]);
  96. }
  97. return ;
  98. }

HDU 5024 Wang Xifeng's Little Plot(枚举)的更多相关文章

  1. HDU 5024 Wang Xifeng's Little Plot (DP)

    题意:给定一个n*m的矩阵,#表示不能走,.表示能走,让你求出最长的一条路,并且最多拐弯一次且为90度. 析:DP,dp[i][j][k][d] 表示当前在(i, j)位置,第 k 个方向,转了 d ...

  2. [ACM] HDU 5024 Wang Xifeng&#39;s Little Plot (构造,枚举)

    Wang Xifeng's Little Plot Problem Description <Dream of the Red Chamber>(also <The Story of ...

  3. HDU 5024 Wang Xifeng&#39;s Little Plot 搜索

    pid=5024">点击打开链接 Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. 2014 网选 5024 Wang Xifeng's Little Plot

    题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...

  5. hdu5024 Wang Xifeng's Little Plot (水

    http://acm.hdu.edu.cn/showproblem.php?pid=5024 网络赛 Wang Xifeng's Little Plot Time Limit: 2000/1000 M ...

  6. hdu 5024 最长的L型

    http://acm.hdu.edu.cn/showproblem.php?pid=5024 找到一个最长的L型,L可以是斜着的 简单的模拟 #include <cstdio> #incl ...

  7. HDU 4173 Party Location(计算几何,枚举)

    HDU 4173 题意:已知n(n<=200)位參赛选手的住所坐标.现要邀请尽可能多的选手来參加一个party,而每一个选手对于离住所超过2.5Km的party一律不去,求最多能够有多少个选手去 ...

  8. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  9. HDU 4282 A very hard mathematic problem --枚举+二分(或不加)

    题意:问方程X^Z + Y^Z + XYZ = K (X<Y,Z>1)有多少个正整数解 (K<2^31) 解法:看K不大,而且不难看出 Z<=30, X<=sqrt(K) ...

随机推荐

  1. MySQL · 引擎特性 · InnoDB 事务锁简介

    https://yq.aliyun.com/articles/4270# zhaiwx_yinfeng 2016-02-02 19:00:43 浏览2194 评论0 mysql innodb lock ...

  2. smartPtr指针的实现

    编写一个智能指针类.智能指针是一种数据类型,一般用模板实现,模拟指针行为的同时还提供自动来及回收机制.它会自动记录SmartPointer<T*>对象的引用计数,一旦T类型对象的引用计数为 ...

  3. LinkedHashMap介绍

    转载:http://uule.iteye.com/blog/1522291 jdk1.7API文档链接:http://tool.oschina.net/apidocs/apidoc?api=jdk_7 ...

  4. NopCmmerce的FakeHttpContext类

    在 Web 中进行测试驱动的开发,比较大的困难是模拟 HttpContext; 1.Nop提供了完整的FakeHttpContext实现,如图 1.FakeHttpContext的作用. 控制器进行单 ...

  5. 在Ubuntu 14.04 64bit上安装numpy和matplotlib库

    原文:http://blog.csdn.net/tao_627/article/details/44004541 按照这个成功安装! 机器学习是数据挖掘的一种实现形式,在学习<机器学习实战> ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 6.全局防护Bypass之一些函数的错误使用

    0x01 背景 PHP程序员在开发过程中难免会使用一些字符替换函数(str_replace).反转义函数(stripslashes),但这些函数使用位置不当就会绕过全局的防护造成SQL注入漏洞. 0x ...

  7. Makefile中指示符“include”、“-include”和“sinclude”的区别

    转:http://www.cnblogs.com/xmphoenix/archive/2012/02/22/2363335.html 指示符“include”.“-include”和“sinclude ...

  8. iOS 开发调试技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

  9. 1.5.1 Analyzers,Tokenizers,Filters概述

    字段分析器(Analyzers)即用于文档索引也用于查询.一个分析器检查字段的文本,并生成一个token流.分析器可能是一个单独的类,也可能是一系列的tokenizer和filter的组合. 分词器把 ...

  10. 在提交SVN时有时候会报svn is already locked 错误

    svn is already locked 解决方案: 如题所述经常在更新代码的时候会产生这样的问题!并且在对应的目录上操作Clean Up 没有任何的效果!如下解决方法. 在出错文件夹下,鼠标右键T ...