2017 年。網格遊戲
難度:中
主題:陣列、矩陣、前綴和
給定一個 0 索引 大小為 2 x n 的二維陣列網格,其中 grid[r][c] 表示矩陣上位置 (r, c) 處的點數。兩個機器人正在這個矩陣上玩遊戲。
兩個機器人最初都從 (0, 0) 開始,並希望到達 (1, n-1)。每個機器人只能向右移動((r, c) 到 (r, c 1))或向下((r, c) 到 (r 1, c))。
遊戲開始時,第一個機器人從 (0, 0) 移動到 (1, n-1),收集其路徑上單元格的所有點。對於路徑上遍歷的所有儲存格 (r, c),grid[r][c] 設定為 0。然後,第二個 機器人從 (0, 0) 移動到 (1, n-1) ),收集其路徑上的點。請注意,它們的路徑可能會相互交叉。
第一個機器人想要最小化第二個機器人收集的點數。相較之下,第二個機器人想要最大化它收集的點數。如果兩個機器人都表現最佳,則回傳第二個機器人收集的分數。
範例1:
- 輸入: grid = [[2,5,4],[1,5,1]]
- 輸出: 4
- 說明:第一個機器人所採取的最佳路徑以紅色顯示,第二個機器人所採取的最佳路徑以藍色顯示。
- 第一個機器人存取的單元格設定為 0。
- 第二個機器人將收集 0 0 4 0 = 4 分。
範例2:
- 輸入: grid = [[3,3,1],[8,5,2]]
- 輸出: 4
- 說明:第一個機器人所採取的最佳路徑以紅色顯示,第二個機器人所採取的最佳路徑以藍色顯示。
- 第一個機器人存取的單元格設定為 0。
- 第二個機器人將收集 0 3 1 0 = 4 分。
範例 3:
- 輸入: grid = [[1,3,1,15],[1,3,3,1]]
- 輸出: 7
-
說明:第一個機器人所採取的最佳路徑以紅色顯示,第二個機器人所採取的最佳路徑以藍色顯示。
- 第一個機器人存取的單元格設定為 0。
- 第二個機器人將收集 0 1 3 3 0 = 7 分。
約束:
- grid.length == 2
- n == grid[r].length
- 1 4
- 1 5
提示:
- 第一個機器人移動到第二排時有n種選擇。
- 我們可以使用前綴和來幫助解決這個問題嗎?
解:
我們將使用以下方法:
前綴和計算:我們將計算網格兩行的前綴和,以有效計算任何子數組的點總和。
-
模擬最佳運動:
- 第一個機器人決定其路徑,以最小化留給第二個機器人的點。
- 在每個列轉換時,第一個機器人可以選擇向下移動,將網格分成兩部分:
- 上部剩餘點:過渡列之後頂行的點。
- 較低剩餘點:過渡列之前的底行中的點。
-
最小化第二個機器人的最大分數:
- 在每次轉換時,計算第二個機器人在第一個機器人的路徑之後可以收集的最大點數。
- 追蹤所有轉換中這些最大值的最小值。
讓我們用 PHP 實作這個解:2017。網格遊戲
<?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 ?>
解釋:
-
前綴與計算:
- prefixTop 和 prefixBottom 分別儲存頂行和底行的累積和。
- 這些可以實現高效率的範圍總和計算。
-
模擬第一個機器人的路徑:
- 在每一列 i,第一個機器人可以決定在 i 列之後向下移動。
- 這將網格分為兩個區域:
- 第 i 列之後的頂行(收集點:prefixTop[n] - prefixTop[i 1])。
- 第 i 列之前的底行(收集點:prefixBottom[i])。
-
第二個機器人的最優點:
- 第二個機器人將佔據剩餘兩個區域中的最大值。
- 我們追蹤所有可能的轉換的最大值中的最小值。
-
複雜性:
- 時間複雜度:O(n),因為我們計算前綴和並循環遍歷網格一次。
- 空間複雜度:O(n),由於前綴和陣列。
範例演練
輸入:網格 = [[2, 5, 4], [1, 5, 1]]
-
前綴和:
- 字首頂部 = [0, 2, 7, 11]
- prefixBottom = [0, 1, 6, 7]
-
過渡點:
- i = 0:頂部剩餘= 11 - 7 = 9,底部剩餘= 00 → 第二個機器人 = 9 .
- i = 1:頂部剩餘= 11 - 11 = 4,底部剩餘= 11 → 第二個機器人 = 4
- . i = 2:頂部剩餘= 0,底部剩餘= 6 → → → →
→ - → → → → → → → →
→
→→ → →第二個機器人=
6.
- 第二個機器人的最低分數: min(9, 4, 6) = 4
- .
以上是網格遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

phpoffersvarioussessionsionsavehandlers:1)文件:默認,簡單的ButMayBottLeneckonHigh-trafficsites.2)Memcached:高性能,Idealforsforspeed-Criticalapplications.3)REDIS:redis:similartomemememememcached,withddeddeddedpassistence.4)withddeddedpassistence.4)databases:gelifforcontrati forforcontrati,有用

PHP中的session是用於在服務器端保存用戶數據以在多個請求之間保持狀態的機制。具體來說,1)session通過session_start()函數啟動,並通過$_SESSION超級全局數組存儲和讀取數據;2)session數據默認存儲在服務器的臨時文件中,但可通過數據庫或內存存儲優化;3)使用session可以實現用戶登錄狀態跟踪和購物車管理等功能;4)需要注意session的安全傳輸和性能優化,以確保應用的安全性和效率。

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器