hdoj5024【BFS/暴力】
题意:
在可以行走的区域内,只能转一次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/暴力】相关推荐
- NC19814最短路 LCA+bfs暴力
700ms飘过 你可能不相信 我先加了inline 又加了快读... 然后TLE->AC 题意: 第一行两个整数n和m,表示图的点数和边数(1≤ n≤ 100000, 1≤ m≤ n+100). ...
- 牛客寒假算法基础集训营1 - C - 小a与星际探索(bfs || 暴力)
题目链接:https://ac.nowcoder.com/acm/contest/317/C 思路1:直接bfs. #include<bits/stdc++.h> using namesp ...
- Codeforces 986A. Fair(对物品bfs暴力求解)
解题思路: 1. 对物品i bfs,更新每个小镇j获得每个物品i的最短距离. 2. 时间复杂度o(n* k*logk),满足2s的要求. 代码: #include <iostream> # ...
- 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 ...
- Codeforces 750D New Year and Fireworks 暴力BFS
点击打开链接 n<=30 t[i]<=5 算重复的有2^30个 但是每层最多只能使地图半径扩大5,所以直径最大为300 所有点都落在300*300矩形内 不重复的点只有9e4个,bfs暴力 ...
- 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)
前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用 ...
- USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】
正题 题目大意 一个迷宫,有许多出口,求一个点到最近的出口最远. 解题思路 直接bfs暴力搜索,然后保存上次的答案 code // luogu-judger-enable-o2 #include< ...
- POJ 1724 ROADS(bfs最短路)
n个点m条边的有向图,每条边有距离跟花费两个参数,求1->n花费在K以内的最短路. 直接优先队列bfs暴力搞就行了,100*10000个状态而已.节点扩充的时候,dp[i][j]表示到达第i点花 ...
- dfs、bfs的终于弄明白了
????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨大赛 来源丨bigsai 前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索( ...
最新文章
- 资料分享:数学建模资料分享 -- 神经网络部分
- JSP自定义标签渲染时报Illegal to flush错误
- TensorFlow模型实现:UNet模型
- Pandas库(2):数据的统计分析
- java lock可重入_Java源码解析之可重入锁ReentrantLock
- mysql 除去列名打印_sql – 使用beeline时避免在列名中打印表名
- git学习入门~~~
- python 删除文件_lt;python笔记gt;点击工具架,删除filechache的文件
- 黑灰产技术手段不断“进阶”,如何防御双十二“羊毛党”?
- java5.0下载_java虚拟机官方下载|java虚拟机下载 v5.0 官方免费版-520下载站
- 学电力好还是计算机好,毕业后想进电力系统上班?这三个专业可优先考虑
- linux vi 命令,Linux之VI命令详解
- Zemax曲率半径的控制方法
- 利用c语言绘制漫天星空-动画
- 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务
- 找靓机用计算机表白,找靓机怎么样-2300元的鼠标用起来怎么样?Finalmouse Ultralight Phantom体验...
- 易盾php,GitHub - yidun/antispam-php-demo: 易盾反垃圾php演示
- Vue3悬浮返回主页按钮设计与实现
- matlab解高阶非齐次方程并作图,高阶非齐次线性微分方程
- 家用监控摄像头意想不到的五条用途
热门文章
- POJ1787多重背包中在最优方案下输出具体的选择方案
- C++高斯赛德迭代法,求线性方程组的解(version1.0)
- Python中read()、readline()和readlines()三者间的区别和用法
- 差分形式的牛顿插值公式(理论)
- Linux命令行下关机【Ubuntu】
- 【干货】eval函数用法解释及对开发者的便利讲解
- Python代码:数字图像处理(DIP)7.1.1图像金字塔example7.1
- POJ 2253 Frogger(最短路Floyd)题解
- vdsm的SSL证书验证过程
- 在angularjs应用中如何做选择评星的效果