题意:
在可以行走的区域内,只能转一次90度的弯,问你最长这条路可以多长。
思路:
我们可以看到

/*
123
8 4
765
*/

转90度的路径会是横竖,也就是1-3-5-7;
还有斜的:2-4-6-8;
我们可以对一个点直接BFS/暴力一下,方向是八个方向,然后计算对应的90度方向上的距离和,开个数组表示某方向上的路径长度,我们可以发现90度方向在数组上的规律,然后再暴力找个最大。
复杂度也不高。
贴一发挫code…….

//#include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const double eps=1e-5;
const double pi=acos(-1.0);
const int mod=1e8+7;
const LL INF=0x3f3f3f3f;const int N=1e2+7;
char ma[N][N];
int n;int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};int Judge(int x,int y)
{if(x<0||y<0||x>=n||y>=n||ma[x][y]=='#')return 0;return 1;
}int bfs(int i,int j)
{int sum[8];for(int k=0;k<8;k++)sum[k]=1;for(int k=0;k<8;k++){int aa=i+dx[k];int bb=j+dy[k];while(Judge(aa,bb)){sum[k]++;aa+=dx[k];bb+=dy[k];}}int ans=0;
//    for(int k1=0;k1<8;k1+=2)
//        for(int k2=1;k2<8;k2+=2)
//            ans=max(ans,sum[k1]+sum[k2]);for(int k1=0;k1<8;++k1)for(int k2=0;k2<8;++k2)if((k1%2==k2%2)&&k1!=k2)    //对于数组的特性,奇数都是斜方向,偶数都是竖直方向。 ans=max(ans,sum[k1]+sum[k2]);return ans-1;
}int main()
{while(~scanf("%d",&n)){if(!n) break;int i,j,ans;for(i=0;i<n;i++)scanf("%s",ma[i]);ans=0;for(i=0;i<n;i++)for(j=0;j<n;j++)if(ma[i][j]=='.')ans=max(ans,bfs(i,j));printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/5934891.html

hdoj5024【BFS/暴力】相关推荐

  1. NC19814最短路 LCA+bfs暴力

    700ms飘过 你可能不相信 我先加了inline 又加了快读... 然后TLE->AC 题意: 第一行两个整数n和m,表示图的点数和边数(1≤ n≤ 100000, 1≤ m≤ n+100). ...

  2. 牛客寒假算法基础集训营1 - C - 小a与星际探索(bfs || 暴力)

    题目链接:https://ac.nowcoder.com/acm/contest/317/C 思路1:直接bfs. #include<bits/stdc++.h> using namesp ...

  3. Codeforces 986A. Fair(对物品bfs暴力求解)

    解题思路: 1. 对物品i bfs,更新每个小镇j获得每个物品i的最短距离. 2. 时间复杂度o(n* k*logk),满足2s的要求. 代码: #include <iostream> # ...

  4. hdu 1983 Kaitou Kid - The Phantom Thief (2)【Bfs+暴力枚举】

    Kaitou Kid - The Phantom Thief (2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32 ...

  5. Codeforces 750D New Year and Fireworks 暴力BFS

    点击打开链接 n<=30 t[i]<=5 算重复的有2^30个 但是每层最多只能使地图半径扩大5,所以直径最大为300 所有点都落在300*300矩形内 不重复的点只有9e4个,bfs暴力 ...

  6. 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)

    前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用 ...

  7. USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】

    正题 题目大意 一个迷宫,有许多出口,求一个点到最近的出口最远. 解题思路 直接bfs暴力搜索,然后保存上次的答案 code // luogu-judger-enable-o2 #include< ...

  8. POJ 1724 ROADS(bfs最短路)

    n个点m条边的有向图,每条边有距离跟花费两个参数,求1->n花费在K以内的最短路. 直接优先队列bfs暴力搞就行了,100*10000个状态而已.节点扩充的时候,dp[i][j]表示到达第i点花 ...

  9. dfs、bfs的终于弄明白了

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨大赛 来源丨bigsai 前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索( ...

最新文章

  1. 资料分享:数学建模资料分享 -- 神经网络部分
  2. JSP自定义标签渲染时报Illegal to flush错误
  3. TensorFlow模型实现:UNet模型
  4. Pandas库(2):数据的统计分析
  5. java lock可重入_Java源码解析之可重入锁ReentrantLock
  6. mysql 除去列名打印_sql – 使用beeline时避免在列名中打印表名
  7. git学习入门~~~
  8. python 删除文件_lt;python笔记gt;点击工具架,删除filechache的文件
  9. 黑灰产技术手段不断“进阶”,如何防御双十二“羊毛党”?
  10. java5.0下载_java虚拟机官方下载|java虚拟机下载 v5.0 官方免费版-520下载站
  11. 学电力好还是计算机好,毕业后想进电力系统上班?这三个专业可优先考虑
  12. linux vi 命令,Linux之VI命令详解
  13. Zemax曲率半径的控制方法
  14. 利用c语言绘制漫天星空-动画
  15. 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务
  16. 找靓机用计算机表白,找靓机怎么样-2300元的鼠标用起来怎么样?Finalmouse Ultralight Phantom体验...
  17. 易盾php,GitHub - yidun/antispam-php-demo: 易盾反垃圾php演示
  18. Vue3悬浮返回主页按钮设计与实现
  19. matlab解高阶非齐次方程并作图,高阶非齐次线性微分方程
  20. 家用监控摄像头意想不到的五条用途

热门文章

  1. POJ1787多重背包中在最优方案下输出具体的选择方案
  2. C++高斯赛德迭代法,求线性方程组的解(version1.0)
  3. Python中read()、readline()和readlines()三者间的区别和用法
  4. 差分形式的牛顿插值公式(理论)
  5. Linux命令行下关机【Ubuntu】
  6. 【干货】eval函数用法解释及对开发者的便利讲解
  7. Python代码:数字图像处理(DIP)7.1.1图像金字塔example7.1
  8. POJ 2253 Frogger(最短路Floyd)题解
  9. vdsm的SSL证书验证过程
  10. 在angularjs应用中如何做选择评星的效果