1937. Bilangan Mata Maksimum dengan Kos
Kesukaran: Sederhana
Topik: Tatasusunan, Pengaturcaraan Dinamik
Anda diberi mata matriks integer m x n (0-diindeks). Bermula dengan 0 mata, anda mahu memaksimumkan bilangan mata yang anda boleh dapat daripada matriks.
Untuk mendapatkan mata, anda mesti memilih satu sel dalam setiap baris. Memilih sel pada koordinat (r, c) akan menambahkan mata[r][c] pada skor anda.
Walau bagaimanapun, anda akan kehilangan mata jika anda memilih sel terlalu jauh daripada sel yang anda pilih dalam baris sebelumnya. Untuk setiap dua baris bersebelahan r dan r + 1 (di mana 0 <= r < m - 1), memilih sel pada koordinat (r, c1) dan (r + 1, c 2) akan menolak abs(c1 - c2) daripada markah anda.
Kembali bilangan maksimum mata yang boleh anda capai.
abs(x) ditakrifkan sebagai:
Contoh 1:
Contoh 2:
Kekangan:
Petunjuk:
Penyelesaian:
Kami boleh memecahkan penyelesaian kepada beberapa langkah:
Kami akan menggunakan dp tatasusunan 2D di mana dp[i][j] mewakili mata maksimum yang boleh kami capai dengan memilih sel pada baris i dan lajur j.
Mulakan baris pertama dp supaya sama dengan baris pertama mata kerana tiada baris sebelumnya untuk menolak kos.
Untuk setiap baris berikutnya, kami mengira mata maksimum yang mungkin untuk setiap lajur dengan mengambil kira kos penukaran daripada baris sebelumnya.
Untuk mengira peralihan dari baris i-1 ke baris i dengan cekap, kita boleh menggunakan dua tatasusunan tambahan kiri dan kanan:
Untuk setiap lajur j dalam baris i:
Hasilnya ialah nilai maksimum dalam baris terakhir tatasusunan dp.
Mari laksanakan penyelesaian ini dalam PHP: 1937. Bilangan Mata Maksimum dengan Kos
Penjelasan:
Pendekatan ini mempunyai kerumitan masa sebanyak (O(m kali n)), yang cekap memandangkan kekangan.
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 Maksimum Mata dengan Kos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!