演算法 海島個數問題

2021-09-20 10:18:29 字數 763 閱讀 4280

乙個矩陣中只有0和1兩種值,每個位置都可以和自己的上、下、左、右四個位置相連,如果有一片1連在一起,這個部分叫做乙個島,求乙個矩陣中有多少個島? 

public class islands }}

return land;

}public static void g_do(int arr, int row, int line)

arr[row][line] = 2;

g_do(arr, row + 1, line);

g_do(arr, row - 1, line);

g_do(arr, row, line + 1);

g_do(arr, row, line - 1);

}public static void main(string args) ,,,

,,

,, };

system.out.println(islands(m1));

int m2 = ,,,

,,

,, };

system.out.println(islands(m2));

}}

解題思路就是整體是乙個雙迴圈巢狀,按順序遍歷,如果遇到1,進入到g病毒函式中,函式進行瘋狗一樣遞迴查詢周圍有1的島,找到都標記為2。每進乙個g病毒,那麼島數一定是+1。這樣迴圈一遍就得到了島數。

假如說資料量特別大,矩陣特別大,可以使用多工同時處理。將矩陣分成幾個小的版塊,然後每個cpu負責乙個版塊,最後再利用交並集計算邊界,合併一起得到島的個數。

演算法 海量資料

目錄 公共部分 王道程式設計師求職寶典 兩個檔案共同的url hash 分治 頻率最高 王道程式設計師求職寶典 按頻率排序多個檔案中的query記錄 hash 分治 王道程式設計師求職寶典 找出檔案中頻率最高的100個詞 top k hash 分治 中位數 bat面試經典題 100億個整數的中位數 ...

演算法 海量資料處理

在面試中我們會經常遇到和海量資料處理相關的問題,在這裡我們將問題進行乙個彙總,保證將來我們在遇到海量資料相關問題的時候能夠快速解答。改文章參考 如果記憶體能夠全部裝下 直接使用快速排序。如果記憶體不能夠全部裝下 先將第乙個位元組,也就是前8位進行分桶,可以分為256個桶,也就是將100億的整數分別按...

8 22 問題 B 海島爭霸

神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。傑克船長準備從自己所占領的島嶼a開始征程,逐個去占領每乙個島嶼。面對危險重重的海洋與詭譎的對手...