2017. Permainan Grid
Kesukaran: Sederhana
Topik: Tatasusunan, Matriks, Jumlah Awalan
Anda diberi 0-diindeks grid tatasusunan 2D bersaiz 2 x n, dengan grid[r][c] mewakili bilangan titik pada kedudukan (r, c) pada matriks. Dua robot sedang bermain permainan pada matriks ini.
Kedua-dua robot pada mulanya bermula pada (0, 0) dan mahu mencapai (1, n-1). Setiap robot hanya boleh bergerak ke kanan ((r, c) ke (r, c 1)) atau bawah ((r, c) ke (r 1, c)).
Pada permulaan permainan, robot pertama bergerak dari (0, 0) ke (1, n-1), mengumpul semua mata daripada sel di laluannya. Untuk semua sel (r, c) yang dilalui pada laluan, grid[r][c] ditetapkan kepada 0. Kemudian, robot saat bergerak dari (0, 0) ke (1, n-1 ), mengumpul mata pada laluannya. Ambil perhatian bahawa laluan mereka mungkin bersilang antara satu sama lain.
Robot pertama mahu meminimumkan bilangan mata yang dikumpul oleh robot kedua. Sebaliknya, robot kedua mahu memaksimumkan bilangan mata yang dikumpulnya. Jika kedua-dua robot bermain secara optimum, kembalikan bilangan mata yang dikumpul oleh saat robot.
Contoh 1:
- Input: grid = [[2,5,4],[1,5,1]]
- Output: 4
-
Penjelasan: Laluan optimum yang diambil oleh robot pertama ditunjukkan dalam warna merah, dan laluan optimum yang diambil oleh robot kedua ditunjukkan dengan warna biru.
- Sel yang dilawati oleh robot pertama ditetapkan kepada 0.
- Robot kedua akan mengumpul 0 0 4 0 = 4 mata.
Contoh 2:
- Input: grid = [[3,3,1],[8,5,2]]
- Output: 4
-
Penjelasan: Laluan optimum yang diambil oleh robot pertama ditunjukkan dalam warna merah, dan laluan optimum yang diambil oleh robot kedua ditunjukkan dengan warna biru.
- Sel yang dilawati oleh robot pertama ditetapkan kepada 0.
- Robot kedua akan mengumpul 0 3 1 0 = 4 mata.
Contoh 3:
- Input: grid = [[1,3,1,15],[1,3,3,1]]
- Output: 7
-
Penjelasan: Laluan optimum yang diambil oleh robot pertama ditunjukkan dalam warna merah, dan laluan optimum yang diambil oleh robot kedua ditunjukkan dengan warna biru.
- Sel yang dilawati oleh robot pertama ditetapkan kepada 0.
- Robot kedua akan mengumpul 0 1 3 3 0 = 7 mata.
Kekangan:
- grid.length == 2
- n == grid[r].panjang
- 1 4
- 1 5
Petunjuk:
- Terdapat n pilihan apabila robot pertama bergerak ke baris kedua.
- Bolehkah kita menggunakan jumlah awalan untuk membantu menyelesaikan masalah ini?
Penyelesaian:
Kami akan menggunakan pendekatan berikut:
Pengiraan Jumlah Awalan: Kami akan mengira jumlah awalan untuk kedua-dua baris grid untuk mengira dengan cekap jumlah mata bagi mana-mana subray.
-
Mensimulasikan Pergerakan Optimum:
- Robot pertama menentukan laluannya untuk meminimumkan mata yang tinggal untuk robot kedua.
- Pada setiap peralihan lajur, robot pertama boleh memilih untuk bergerak ke bawah, membahagikan grid kepada dua segmen:
- Titik baki atas: Mata di baris atas selepas lajur peralihan.
- Tinggal baki bawah: Mata di baris bawah sebelum lajur peralihan.
-
Meminimumkan Mata Maksimum untuk Robot Kedua:
- Pada setiap peralihan, hitung mata maksimum yang boleh dikumpulkan oleh robot kedua selepas laluan robot pertama.
- Jejak minimum maksimum ini merentas semua peralihan.
Mari kita laksanakan penyelesaian ini dalam PHP: 2017. Permainan Grid
<?php function gridGame($grid) { ... ... ... /** * go to ./solution.php */ } // Example usage $grid1 = [[2, 5, 4], [1, 5, 1]]; $grid2 = [[3, 3, 1], [8, 5, 2]]; $grid3 = [[1, 3, 1, 15], [1, 3, 3, 1]]; echo gridGame($grid1) . "\n"; // Output: 4 echo gridGame($grid2) . "\n"; // Output: 4 echo gridGame($grid3) . "\n"; // Output: 7 ?>
Penjelasan:
-
Pengiraan Jumlah Awalan:
- prefixTop dan prefixBottom menyimpan jumlah terkumpul untuk baris atas dan bawah, masing-masing.
- Ini membolehkan pengiraan jumlah julat yang cekap.
-
Mensimulasikan Laluan Robot Pertama:
- Di setiap lajur i, robot pertama boleh memutuskan untuk bergerak ke bawah selepas lajur i.
- Ini membahagikan grid kepada dua kawasan:
- Baris atas selepas lajur i (mata terkumpul: awalanAtas[n] - awalanAtas[i 1]).
- Baris bawah sebelum lajur i (titik terkumpul: awalanBawah[i]).
-
Mata Optimum Robot Kedua:
- Robot kedua akan mengambil maksimum dua kawasan yang tinggal.
- Kami menjejaki minimum maksimum ini untuk semua peralihan yang mungkin.
-
Kerumitan:
- Kerumitan Masa: O(n), sambil kita mengira jumlah awalan dan gelung melalui grid sekali.
- Kerumitan Angkasa: O(n), disebabkan tatasusunan jumlah awalan.
Contoh Panduan
Input: grid = [[2, 5, 4], [1, 5, 1]]
-
Jumlah Awalan:
- prefixTop = [0, 2, 7, 11]
- prefixBottom = [0, 1, 6, 7]
-
Mata Peralihan:
- i = 0: Baki Atas = 11 - 7 = 9, Baki Bawah = 0 → Robot Kedua = 9.
- i = 1: Baki Atas = 11 - 11 = 4, Baki Bawah = 1 → Robot Kedua = 4.
- i = 2: Baki Atas = 0, Baki Bawah = 6 → Robot Kedua = 6.
- Mata Minimum untuk Robot Kedua: min(9, 4, 6) = 4.
Ini sepadan dengan output yang dijangkakan.
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:
- GitHub
Atas ialah kandungan terperinci Permainan Grid. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Alipay Php ...

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),