怎么查看自己网站有没有被百度收录,wordpress 发布软件,网站建设中 模板,wordpress谷歌广告题意#xff1a;从任意一个任意一个可走的点开始找一个最长的路#xff0c;这条路如果有转弯的话#xff0c; 那么必须是 90度#xff0c;或者没有转弯#xff01; 思路#xff1a; 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 #xff01; step[i][… 题意从任意一个任意一个可走的点开始找一个最长的路这条路如果有转弯的话 那么必须是 90度或者没有转弯 思路 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 step[i][j][k] 表示的是i,j沿着k方向一直走到头或者转弯时的最长步数 最后枚举每一个可走点转弯为90度的路径找到最长的长度 step[i][j][k1] step[i][j][k2] 就是 (i, j)这个点 k1 和 k2方向构成90度 1 #includeiostream2 #includecstdio3 #includecstring4 #includealgorithm5 #define N 1056 using namespace std;7 8 int step[N][N][8];9 int dir[8][2] { {0, 1}, {1, 0}, {-1, 0}, {0, -1}, {-1, -1}, {1, 1}, {-1, 1}, {1, -1} };
10 int index[8][2] { {0, 1}, {1, 3}, {2, 3}, {0, 2}, {5, 6}, {5, 7}, {4, 7}, {4, 6}};//每一个节点所对应的转弯的枚举
11 char mp[N][N], vis[N][N];
12 int n;
13
14 bool judge(int x, int y){
15 if(x 1 || y 1 || x n || y n)
16 return false;
17 if( mp[x][y] #) return false;
18
19 return true;
20 }
21
22 void dfs(int x, int y){
23 for(int i 0; i 8; i){
24 int xx x dir[i][1];
25 int yy y dir[i][0];
26 if(!judge(xx, yy))
27 step[x][y][i] 1;
28 else{
29 if( !step[xx][yy][i] )//记忆话的赶脚
30 dfs(xx, yy);
31 step[x][y][i] 1 step[xx][yy][i];
32 }
33 }
34 }
35
36 int main(){
37 while(scanf(%d, n) n){
38 memset(step, 0, sizeof(step));
39 memset(vis, 0, sizeof(vis));
40 for(int i 1; i n; i)
41 scanf(%s, mp[i]1);
42
43 for(int i 1; i n; i)
44 for(int j 1; j n; j)
45 if(mp[i][j] .)
46 dfs(i, j);
47
48 int maxN -1;
49 for(int i1; i n; i)
50 for(int j 1; j n; j){
51 if(mp[i][j] .)
52 for(int k 0; k 8; k)
53 maxN max(maxN, step[i][j][index[k][0]] step[i][j][index[k][1]] );
54 }
55 printf(%d\n, maxN - 1);//因为多加了一次拐点
56 }
57 return 0;
58 } View Code 转载于:https://www.cnblogs.com/hujunzheng/p/3993741.html