神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。 這是乙個由海洋、島嶼和海盜組成的危險世界。面對危險重重的海洋與詭譎的對手,如何憑藉智慧型與運氣,建立起乙個強大的海盜帝國。
傑克船長手頭有一張整個海域的海圖,上面密密麻麻分布著各個海嶼的位置及面積。他想盡快知道整個海域共有多少島嶼以及最大島嶼的面積。
【約束條件】
①若乙個陸地八個方向之一(上、下、左、右、左上、右上、左下、右下)的位置也是陸地,則視為同乙個島嶼。
② 假設第一行,最後一行,第一列,最後一列全為0.
③ 1第1行: m n t 表示海域的長,寬及乙個單位表示的面積大小
接下來有m行 ,每行有n個01組成的序列以及其中穿插一些空格。0表示海水,1表示陸地,其中的空格沒用,可以忽略掉。
輸出一行,有2個整數,乙個空格間隔,表示整個海域的島嶼數,以及最大島嶼的面積
8 16 9900000000 00000000
0000110011000000
0001111000111000
0000000 00 0000000
00111 111000001 10
001110000 0000000
0100001111 111100
0000000000000000
5 990題意描述:
根據所給數字所組成的地圖,計算出島嶼的個數和最大島嶼的面積。(上、下、左、右、左上、左下、右上、右相鄰算乙個島嶼)。
思路:
先以字串的形式讀入,然後再存入另乙個數字陣列同時把空格去掉,根據深搜計算出島嶼的個數,最後輸出島嶼個數和最大島嶼面積。
**如下:
#include#includeint a[501][501];
int m,n,t;
char b[1001];
int s;/*面積*/
void dfs(int x,int y)
int main()
} }for(i = 1; i<= m;i ++)
for(j = 1;j <= n;j ++)
}printf("%d %d\n",sum,max*t);
return 0;
}
HNACM 八 B 最大島嶼
傳送門 這裡輸入時有乙個小技巧,scanf 1d map i j 表示每次唯讀入1個數,如果前面不加1表示讀入到非數字的地方停止。這樣每次就只能讀入乙個數,可以用整型陣列存放地圖,而不是字元陣列。每當遇到乙個是1的點,就開始搜尋,同時把搜尋到的點都變成0,include define n 510 d...
最大島嶼面積
用1表示陸地,0表示海洋,只有水平和豎直位置關係才算相鄰.求島嶼的最大連通面積 5 二維陣列大小 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 從一塊陸地出發,像四個方向遞迴遍歷 每次遞迴對下標進行判斷,以區域的邊界或者遇到海洋為遞迴邊界 設定訪...
nyoj 1237 最大島嶼
神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。面對危險重重的海洋與詭譎的對手,如何憑藉智慧型與運氣,建立起乙個強大的海盜帝國。傑克船長手頭有...