2014 網選 5024 Wang Xifeng's Little Plot

題意:從任意一個任意一個可走的點開始找一個最長的路,這條路如果有轉彎的話,
那么必須是 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 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define  N  105
 6 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 i=1; 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531640.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531640.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531640.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

aix升級新安裝oracle,AIX 5L上安裝和升級Oracle

1、檢查環境檢查硬件與OS位數&#xff0c;一定確保64bit#bootinfo -y64#bootinfo -K64檢查內存大小&#xff0c;至少需要512M以上#/usr/sbin/lsattr -E -l sys0 -a realmemrealmem 12582912 Amount of usable physical memory in Kbytes False 臨時目錄的大小&#xff0c;至少5…

Adobe InDesign各版本安裝指南

下載鏈接 https://pan.baidu.com/s/11sTpMUbQEXhyjpkBlixcLg?pwd0531 #2024版 1.鼠標右擊【Ai2024(64bit)】壓縮包&#xff08;win11及以上系統需先點擊“顯示更多選項”&#xff09;【解壓到 Ai2024(64bit)】。 2.打開解壓后的文件夾&#xff0c;鼠標右擊【Setup】選擇【以…

java中如何將JScrollPane的垂直滾動條自動移動到最下端

JPanel QQP new JPanel();              JScrollPane jsp new JScrollPane(QQP);              JScrollBar jsb jsp.getVerticalScrollBar();QQP.updateUI();//利用當前外觀的值重置 UI 屬性。 也可以保證滾動條隨時的更新//終于搞好了&#xf…

codeforces MUH and Important Things

/*   題意&#xff1a;給一個序列&#xff0c;表示每一項任務的難度&#xff0c;要求完成每一項任務的循序是按照難度由小到大的&#xff01;輸出三種符合要求的工作順序的序列&#xff01;   思路&#xff1a;直接看代碼.... */ 1 #include<iostream>2 #include<…

oracle11g ogg報價,Oracle11g GoldenGate配置錯誤OGG-00868 Attaching to ASM server

GGSCI (CBDBS01) 9> start eiexaa錯誤&#xff1a;2011-02-24 10:32:45 ERROR OGG-00868 Oracle GoldenGate Capture for Oracle, eiexaa.prm: Attaching to ASM server CBOMS:1568/ASM1: (12154) ORA-12154: TNS:could not resolve the connect identifier specified.…

Linux啟動更新命令,Linux更新和查詢命令chkconfig詳細介紹

chkconfig在Linux下是管理服務/啟動項在各個系統運行級別中的設置&#xff0c;在Linux中系統有7個運行級別&#xff0c;分別是&#xff1a;1.運行級別0&#xff1a;表示關機2.運行級別1&#xff1a;表示單用戶模式3.運行級別2&#xff1a;無網絡連接的多用戶命令行模式4.運行級…

怎樣永久更改嵌入式linux系統ip,如何修改嵌入式系統IP

如何修改嵌入式系統IP(2012-06-05 01:36:56)標簽&#xff1a;嵌入式如何雜談如何修改嵌入式系統IP我的嵌入式設備的根文件系統是用busybox作的&#xff0c;現在我想在程序里面更改它的IP地址等網絡信息&#xff0c;但是沒有找到方法&#xff0c;希望有知道的給我幫助&#xff0…

codeforces MUH and Cube Walls

題意&#xff1a;給定兩個序列a ,b, 如果在a中存在一段連續的序列使得 a[i]-b[0]k, a[i1]-b[1]k.... a[in-1]-b[n-1]k 就說b串在a串中出現過&#xff01;最后輸出b串在a串中出現幾次&#xff01; 思路&#xff1a; KMP變形&#xff01;如何轉換成KMP求解呢&#xff1f; 舉一個例…

linux release 版本的區別,編譯debug版本和編譯release版本的區別

大項目的版本編譯會區別debug和release&#xff0c;那debug和release會有什么區別呢&#xff1f;通過對比這兩者的編譯選項可以找到答案。1.對比編譯過程debug:-DOS_LINUX -DDEBUG_VERSION -fno-builtin -pipe -Wall -fsigned-char -g-mlongcall -DCPUPPC85XX -mcpu8548 -m…

java模仿qq好友面板的布局(BoxLayout問題)

..............JLabel ll new JLabel(dlg.getNameText() ":" dlg.getIPText(), ii[index], JLabel.LEFT);tmp new JPanel();//將標簽添加到這個面板中tmp.setLayout(new FlowLayout(FlowLayout.CENTER));tmp.setBackground(new Color(255, 0, 255));/** BoxLayo…

linux apple開發環境,Objective-C開發環境設置

如果要安裝自己的Objective-C編程語言編程環境&#xff0c;則需要在計算機上安裝文本編輯器和GCC編譯器。1. 文本編輯器文本編輯器用于編寫程序代碼。一些常見的編輯器如&#xff1a;Windows Notepad&#xff0c;OS Edit命令&#xff0c;Brief&#xff0c;Epsilon&#xff0c;E…

codeforces C. Design Tutorial: Make It Nondeterministic

題意&#xff1a;每一個人 都有frist name 和 last name&#xff01; 從每一個人的名字中任意選擇 first name 或者 last name 作為這個人的編號&#xff01;通過對編號的排序&#xff0c;得到每一個人 最終順序&#xff01;比較中的序列能否得到給定輸出的序列一致&#xff01…

Linux系統擴硬盤,Linux系統硬盤擴容

1、查看硬盤已經用了99%$ df -h #查看硬盤已經使用了99%文件系統 容量 已用 可用 已用% 掛載點devtmpfs 2.0G 0 2.0G 0% /devtmpfs 2.0G 12K 2.0G 1% /dev/shmtmpfs 2.0G 11M 2.0G 1% /runtmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup/dev/mapper/centos-root 47G 47G 687M 99% / ####…

codeforce A. Design Tutorial: Learn from Math

題意&#xff1a;將一個數拆成兩個合數的和&#xff0c; 輸出這兩個數&#xff01;&#xff08;這道題做的真是TMD水啊&#xff09;開始的時候不知道composite numbers是啥意思&#xff0c;看了3遍才看懂.... 看懂之后又想用素數篩選法來做&#xff0c;后來決定單個判斷一個數是…

設置密碼命名是什么linux,orapwd 工具建立密碼文件遵守的命名方法

orapwd 工具建立建立的密碼文件 一定要orapw實例名嗎我在11g和10g 測試是必須要 orapw實例名 才能登錄成功以下是驗證過程[oracleasm dbs]$ rm orapwasm[oracleasm dbs]$ orapwd fileorapwdasm passwordabcdefg entries10[oracleasm dbs]$ sqlplus /nologSQL*Plus: Release 10.…

codeforces B. Design Tutorial: Learn from Life

題意&#xff1a;有一個電梯&#xff0c;每一個人都想乘電梯到達自己想要到達的樓層&#xff01;從a層到b層的時間是|a-b|&#xff0c; 乘客上下電梯的時間忽略不計&#xff01;問最少需要多少的時間.... 這是一道神題啊&#xff0c;自己的思路不知不覺的就按照注解的思路走…

arm linux 中斷優先級,ARM中斷處理過程

以s3c2440 ARM9核為例&#xff1a;一:s3c2440 ARM處理器特性&#xff1a;1、S3C2440支持60個中斷源&#xff0c;含子中斷源&#xff1b;2、ARM9采用五級流水線方式&#xff1b;3、支持外部中斷和內部中斷&#xff1b;二、s3c2440 支持的寄存器&#xff1a;2.1 外部中斷寄存器24…

codeforces D. Design Tutorial: Inverse the Problem

題意&#xff1a;給定一個矩陣&#xff0c;表示每兩個節點之間的權值距離&#xff0c;問是否可以對應生成一棵樹&#xff0c; 使得這棵樹中的任意兩點之間的距離和矩陣中的對應兩點的距離相等&#xff01; 思路&#xff1a;我們將給定的矩陣看成是一個圖&#xff0c;a 到 b會有…

linux ssh 遠程會話保存,遠程SSH會話和流程在斷開后運行的5種方法

SSH或安全Shell簡單來說就是一個人可以遠程訪問其他用戶的其他系統&#xff0c;但僅在命令行即非GUI模式的方法。 在更多的技術術語中&#xff0c;當我們ssh到其他用戶在某些其他系統上并在該機器上運行命令時&#xff0c;它實際上創建一個偽終端并將其附加到登錄用戶的登錄she…

java模擬一個簡單的QQ

v 項目源碼https://github.com/hjzgg/java_QQ v 標題效果package testFour;import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.I…