日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdoj5024【BFS/暴力】

發布時間:2025/4/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/暴力】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。