1568. Bilangan Hari Minimum untuk Memutuskan Sambungan Pulau
Kesukaran: Sukar
Topik: Tatasusunan, Depth-First Search, Breadth-First Search, Matriks, Komponen Sangat Bersambung
Anda diberi grid grid perduaan m x n di mana 1 mewakili tanah dan 0 mewakili air. Pulau ialah kumpulan bersambung 4 arah (mendatar atau menegak) maksimum bagi 1.
Grid dikatakan disambungkan jika kita mempunyai tepat satu pulau, sebaliknya dikatakan terputus.
Dalam satu hari, kita dibenarkan menukar ****sebarang sel tanah tunggal (1) kepada sel air (0).
Kembali bilangan minimum hari untuk memutuskan sambungan grid.
Contoh 1:
Contoh 2:
Kekangan:
Petunjuk:
Penyelesaian:
Kita perlu mempertimbangkan langkah berikut:
Semak Ketersambungan Permulaan: Mula-mula, semak sama ada grid sudah terputus sambungan dengan menentukan sama ada terdapat lebih daripada satu pulau dalam grid. Jika ia sudah terputus, kembalikan 0.
Semak Jika Penyingkiran Tunggal Memutuskan Sambungan Pulau: Lelaran melalui setiap sel grid. Tukar sel dari 1 kepada 0 buat sementara waktu (jika 1) dan semak sama ada grid terputus sambungan dengan mengira bilangan pulau. Jika menukar sel tunggal memutuskan sambungan pulau, kembalikan 1.
Pemutus Sambungan Dua Hari: Jika tiada penukaran sel tunggal memutuskan sambungan pulau, maka grid boleh diputuskan sambungan dengan menukar mana-mana dua sel darat bersebelahan. Oleh itu, kembalikan 2.
Mari laksanakan penyelesaian ini dalam PHP: 1568. Bilangan Hari Minimum untuk Memutuskan Sambungan Pulau
Penjelasan:
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Bilangan Hari Minimum untuk Memutuskan Sambungan Pulau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!