Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ 2017. Grid Game ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π² ΠΈΠ³ΡΠ΅ Ρ 2 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ. Π Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΡΡ β "ΡΠ°Π·ΠΌΡΡΠ»Π΅Π½ΠΈΡ Π½Π° ΡΠ°Π»ΡΠ΅ΡΠΊΠ΅".
ποΈ Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΠ°Π½ΠΎ: Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² grid
ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 2 x n
, Π³Π΄Π΅ grid[r][c]
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ² Π² ΡΡΠ΅ΠΉΠΊΠ΅ (r, c)
.
- ΠΠ²Π° ΡΠΎΠ±ΠΎΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΠ³ΡΡ Π² ΡΡΠ΅ΠΉΠΊΠ΅
(0, 0)
ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΡΡΠΈΡΡ ΡΡΠ΅ΠΉΠΊΠΈ (1, n-1)
.
- ΠΠ±Π° ΡΠΎΠ±ΠΎΡΠ° ΠΌΠΎΠ³ΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΏΡΠ°Π²ΠΎ ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·.
- ΠΠ΅ΡΠ²ΡΠΉ ΡΠΎΠ±ΠΎΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄ΠΎ ΡΠΈΠ½ΠΈΡΠ°, ΡΠΎΠ±ΠΈΡΠ°Ρ Π²ΡΠ΅ ΠΎΡΠΊΠΈ Π½Π° ΡΠ²ΠΎΡΠΌ ΠΏΡΡΠΈ.
- ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠΊΠΈ Ρ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΡ
ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠΎΠ±ΠΎΡΠΎΠΌ ΡΡΠ΅Π΅ΠΊ ΠΎΠ±Π½ΡΠ»ΡΡΡΡΡ.
Π¦Π΅Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°: ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΠΎΡ.
π‘ ΠΠ΄Π΅Ρ
ΠΠ΅Π³ΠΊΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ:
- ΠΡΠ°Π²ΠΎ β ΠΠ½ΠΈΠ·: Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΉΡΠΈ Π²Π΅ΡΡ Π²Π΅ΡΡ
Π½ΠΈΠΉ ΡΡΠ΄, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΏΡΡΡΠΈΡΡΡΡ Π²Π½ΠΈΠ· Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅.
- ΠΠ½ΠΈΠ· β ΠΡΠ°Π²ΠΎ: Π‘ΠΏΡΡΡΠΈΡΡΡΡ Π²Π½ΠΈΠ· ΡΡΠ°Π·Ρ, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ Π²Π΄ΠΎΠ»Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠ΄Π°.

Π Π·Π½Π°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΎΠ±ΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° ΠΈΠ· Π΄Π²ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ².
ΠΡΠΎ Π·Π°Π΄Π°ΡΠ° Π½Π° Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°ΠΊΡΠ°.
π ΠΠ΅ΡΠ°Π»ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°
-
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ:
- ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ² Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΡΠ΄Ρ (
top_score_remained
).
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
bot_score_collected
Π² 0
.
-
ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ: ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΠΎΡΠΊΠΈ Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΡΠ΄Ρ ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΊΠΈ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΡΠ΄Ρ, ΡΡΠΎΠ±Ρ ΡΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°.
- Π Π°ΡΡΡΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π΄Π²ΡΡ
ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ.
- ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΡΡΡΠΎΠ².
-
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
- ΠΠ΅ΡΠ½ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΎΡΠΊΠΎΠ² ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Ρ
ΠΎΠ΄ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°.
β±οΈ ΠΡΠΈΠΌΠΏΡΠΎΡΠΈΠΊΠ°
- ΠΡΠ΅ΠΌΡ: O(n), Π³Π΄Π΅
n
β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ.
- ΠΠ°ΠΌΡΡΡ: O(1), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠΎΠ².
π» ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄
impl Solution {
pub fn grid_game(grid: Vec<Vec<i32>>) -> i64 {
let n = grid[0].len();
// Calculate the total points in the top row initially
let mut top_score_remained: i64 = grid[0].iter().map(|&x| x as i64).sum();
let mut bot_score_collected: i64 = 0;
// Variable to track the optimal score for the second robot
let mut opt_second_score: i64 = top_score_remained;
// Iterate through each column
for j in 0..n {
// Reduce the top row points as the first robot moves
top_score_remained -= grid[0][j] as i64;
// Compute the maximum points the second robot can collect
opt_second_score = opt_second_score.min(
bot_score_collected.max(top_score_remained),
);
// Update the bottom row points collected by the first robot
bot_score_collected += grid[1][j] as i64;
}
opt_second_score
}
}
Tags:Β #rust #algorithms #games #strategy