P1331 海戰 洛谷

2022-04-10 20:57:57 字數 1294 閱讀 6105

在峰會期間,武裝部隊得處於高度戒備。警察將監視每一條大街,軍隊將保衛建築物,領空將布滿了f-2003飛機。此外,巡洋船隻和艦隊將被派去保護海岸線。不幸的是因為種種原因,國防海軍部僅有很少的幾位軍官能指揮大型海戰。因此,他們考慮培養一些新的海軍指揮官,他們選擇了「海戰」遊戲來幫助學習。

在這個著名的遊戲中,在乙個方形的盤上放置了固定數量和形狀的船隻,每只船卻不能碰到其它的船。在這個題中,我們僅考慮船是方形的,所有的船隻都是由圖形組成的方形。編寫程式求出該棋盤上放置的船隻的總數。

輸入格式:

輸入檔案頭一行由用空格隔開的兩個整數r和c組成,1<=r,c<=1000,這兩個數分別表示遊戲棋盤的行數和列數。接下來的r行每行包含c個字元,每個字元可以為「#」,也可為「.」,「#」表示船隻的一部分,「.」表示水。

輸出格式:

為每乙個段落輸出一行解。如果船的位置放得正確(即棋盤上只存在相互之間不能接觸的方形,如果兩個「#」號上下相鄰或左右相鄰卻分屬兩艘不同的船隻,則稱這兩艘船相互接觸了)。就輸出一段話「there are s ships.」,s表示船隻的數量。否則輸出「bad placement.」。

輸入樣例#1:

6 8

.....#.#

##.....#

##.....#

.......#

#......#

#..#...#

輸出樣例#1:

there are 5 ships.

dfs33~39行 是對船隻是否符合條件的判斷;

假定找到的第一處在邊長為2的正方形中的左上角;

搜尋其餘三處,若總船數為3,則船中有不屬於同一矩形的船;

1 #include 2 #include 3 #include 4

5using

namespace

std;67

intr,c,num,tot;

8int fx[4]=;

9int fy[4]=;

10char map[1015][1015

];11

12void dfs(int x,int

y)1322}

2324

intmain()

2540}41

for(int i=1;i<=r;i++)

42for(int j=1;j<=c;j++)

43if(map[i][j]=='#'

)4448 printf("

there are %d ships.

",tot);

49return0;

50 }

洛谷P1331海戰

題目傳送門 這道題的難點在於判斷是否有船相鄰。通過自己模擬的資料可以得出結論 如果圖是不和法的,一定存在如下結構 或 或 或 即在乙個2 2的方格中有三個 因為題裡說船是方形的,即只能是橫條或豎條 剛開始不審題爆掉了37分 於是就有判斷 boold int i,int j if a i 1 j if...

洛谷P1331海戰

題目描述題目描述 在峰會期間,武裝部隊得處於高度戒備。警察將監視每一條大街,軍隊將保衛建築物,領空將布滿了f 2003飛機。此外,巡洋船隻和艦隊將被派去保護海岸線。不幸的是因為種種原因,國防海軍部僅有很少的幾位軍官能指揮大型海戰。因此,他們考慮培養一些新的海軍指揮官,他們選擇了 海戰 遊戲來幫助學習...

洛谷P1331 海戰

這還是一道聯通塊的題,只是需要判斷是否存在以下四種情況 o.o oo oo oo oo o.o 如果存在就是bad placement.要注意標記以下,不然會出現多次輸出bad placement.的情況。ac 如下 include include include include include i...