Rumah >pembangunan bahagian belakang >tutorial php >. Cara Berbeza untuk Menambah Kurungan
241. Cara Berbeza untuk Menambah Tanda Kurung
Kesukaran: Sederhana
Topik: Matematik, Rentetan, Pengaturcaraan Dinamik, Rekursi, Memoisasi
Memandangkan ungkapan rentetan nombor dan pengendali, kembalikan semua hasil yang mungkin daripada pengiraan semua kemungkinan cara yang berbeza untuk mengumpulkan nombor dan operator. Anda boleh mengembalikan jawapan dalam sebarang pesanan.
Kes ujian dijana supaya nilai output muat dalam integer 32-bit dan bilangan keputusan berbeza tidak melebihi 104.
Contoh 1:
((2-1)-1) = 0 (2-(1-1)) = 2
Contoh 2:
(2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10
Kekangan:
Penyelesaian:
Kita boleh menggunakan rekursi digabungkan dengan memoisasi untuk menyimpan hasil yang dikira sebelum ini bagi sub-ungkapan, kerana ini mengelakkan pengiraan berlebihan dan mengoptimumkan penyelesaian.
Rekursi:
Hafazan:
Kes Asas:
Untuk input "2*3-4*5":
Mari laksanakan penyelesaian ini dalam PHP: 241. Cara Berbeza untuk Menambah Tanda Kurung
<?php class Solution { /** * @var array */ private $memo = []; /** * @param String $expression * @return Integer[] */ public function diffWaysToCompute($expression) { ... ... ... /** * go to ./solution.php */ } /** * @param $expression * @return array|mixed */ private function compute($expression) { ... ... ... /** * go to ./solution.php */ } } // Example usage $solution = new Solution(); $expression1 = "2-1-1"; $expression2 = "2*3-4*5"; print_r($solution->diffWaysToCompute($expression1)); // Output: [0, 2] print_r($solution->diffWaysToCompute($expression2)); // Output: [-34, -14, -10, -10, 10] ?>
Pendekatan ini memastikan anda mengira semua hasil yang mungkin dengan cekap dengan memanfaatkan hafalan untuk mengelakkan pengiraan berlebihan.
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 . Cara Berbeza untuk Menambah Kurungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!