在峰會期間,武裝部隊得處於高度戒備。警察將監視每一條大街,軍隊將保衛建築物,領空將布滿了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 45using
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...