hdoj5024【BFS/暴力】
来源:互联网 发布:鞋子淘宝试用报告范文 编辑:程序博客网 时间:2024/05/01 01:50
题意:
在可以行走的区域内,只能转一次90度的弯,问你最长这条路可以多长。
思路:
我们可以看到
/*1238 4765*/
转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;}
0 0
- hdoj5024【BFS/暴力】
- POJ 3697 BFS暴力
- hdu1175 暴力简单bfs
- poj 3278 暴力BFS
- HDU 5336 暴力BFS
- POJ3126Prime Path 暴力BFS
- FZU2150双源BFS,暴力搜索
- Nightmare(暴力剪枝BFS)
- CF 558C 暴力,bfs
- CCF 最优配餐【暴力BFS】
- SGU 518 Kidnapping BFS,暴力
- CSUOJ 1302 - Walking on Chessboard 暴力BFS
- POJ 2329 (暴力+搜索bfs)
- NYOJ 21 三个水杯 【暴力+BFS】
- poj 3126 Prime Path 【暴力BFS】
- FZU 2150 Fire Game (暴力BFS)
- codeforces543B. Destroying Roads(暴力枚举bfs)
- uva 1318 - Monster Trap(bfs+暴力)
- ContentProvider和ContentResolver的使用
- 07.函数
- 设置CURL头信息
- Android 使用Notification创建推送通知
- 最长公共子序列知识点
- hdoj5024【BFS/暴力】
- bnu10791DOTA选人
- 记录错误16.8.12 android receiver dialog
- [ Android Studio ]关于编译报错 缓存 问题
- 原始数据的分析
- 运维自动化需要的讨论
- 解决微信浏览器无法使用reload()刷新页面
- IOS之UITableView优化-可重用机制
- 如何直接为价廉的ESP8266 WiFi模块编写程序