登录后可回复主题
您需要 登录 才可以下载或查看,没有帐号?注册账号
x
【 NO.1 增量元素之间的最大差值】
2 V) _3 \3 {; A5 U. k7 Q
0 U7 e! a* ~; |1 q( [& r, X [解题思路4 `9 n' w6 H8 f) J2 ]3 C
遍历数组维护全局最小值,若当前值较大就是一个合理的答案,遍历过程取最大的合理答案即可。! n9 @/ i5 \' ^( K" g) i9 y# T
0 _/ L9 I1 g( w0 O z* {+ \9 o
代码展示# S9 p$ C1 V4 F, ] C9 t5 l
0 a" m; C$ J$ Q( {1 h D2 w5 y
public class Solution {3 t9 N" A4 \8 Y
public int maximumDifference(int[] nums) {- Y1 j6 |* j& Z7 X1 W" O% z
if (nums == null || nums.length == 0) {
$ Z% L0 p! Z5 p* }1 @- ^+ q return 0;% b2 \, v2 `$ Y; P2 j+ I0 v1 V2 O
}) O% I# I0 f. X8 W3 Y; T
int res = -1;( k, {$ }3 i4 b( i9 S9 S) O& q
int minNum = Integer.MAX_VALUE;& o7 R( S o6 O: }$ a0 S( |
for (int n : nums) {
1 E7 c! ^& b. ]9 o if (n > minNum) {
7 q* @8 D; D8 `& r. V$ s& H res = Math.max(n - minNum, res);8 W" L, o( `, ^7 R' o
}
% L4 ~; [. y1 B2 ^" Q3 }' n minNum = Math.min(minNum, n);/ k, Q: `7 X0 s5 H0 N
}1 S8 W: f5 R$ k* Y* O8 _7 v
return res;
6 s: B8 W2 N& g+ g }( u6 {: Z8 Z, R4 x
}
* M( I6 W# [1 m: S, o5 l2 g+ L2 _
8 S2 f N6 q! F! f( M5 v
【 NO.2 网格游戏】: m" C( R5 ]. N C4 m6 r1 I8 {( \
3 G0 c7 j6 z) W% G s) i解题思路3 {. t7 Z4 P! @' g" \2 w4 x$ D' [
注意到网格只有两行,所以第一个机器人需要选择的实际上就是从哪一列向下。在它确定了向下的那一列之后,第二个机器人要么只能拿到第一行开始部分的分数,要么只能拿到第一行结尾部分的分数。
) u+ o; v; ^$ i2 y9 g# L$ L, J5 ~: N1 ]) \+ }: e, v) ?2 e
代码展示
: v M9 y9 I5 s4 N# L; X3 p% i3 v* s; ~
public class Solution {
4 w) G, Y9 b4 m; F5 u7 Z public long gridGame(int[][] grid) {% x" [! Y6 o3 N0 b/ M, \4 C
if (grid == null || grid.length == 0 || grid[0].length == 0) {
& x. Z) W9 Q& Q8 ~! Y8 U return 0;
; A& l9 v1 r j0 ^& ^5 A }9 U1 I& R) q9 d8 l0 G5 J, l5 ]
int n = grid[0].length;2 X8 f/ U1 K) R+ }
long left = 0, rihgt = 0;
5 u7 M. @+ m' c7 [8 P' ] for (int i = 1; i < n; i++) {
9 D" G- e; x) @! a rihgt += grid[0][i];
% F+ V2 x# n' y2 D }
. a' U0 y, D$ l0 ~, w long res = rihgt;
. h0 G3 M' ?4 Q! c, c1 S for (int i = 1; i < n; i++) {
$ t8 _" k- b c left += grid[1][i - 1];- W2 [% v, I* X
rihgt -= grid[0][i];2 }1 l2 V4 g1 C5 t" \. B1 q) }9 ~
res = Math.min(res, Math.max(left, rihgt));" H" X, X$ i5 F1 V* d6 C1 v
}
" B# K' }( c& _' P1 ]5 U return res;
( @0 e) ]( n3 t, ^" g2 v3 L- \ }
* h: t1 G1 ^9 N}$ K# T. v" E9 I4 F( y6 g- r
( J1 `! I- [- y+ D
, X/ a" |# q: Y【 NO.3 判断单词是否能放入填字游戏内】+ r, L/ L! z. R8 \# U: g+ b
! t$ e0 }/ Z7 L6 K3 r: @解题思路9 r7 M/ k2 [) }
模拟题,详情见注释。
2 l7 {1 d+ q0 X2 q2 [: U7 b/ w& y4 \
代码展示
, X( _) M3 g: T, h9 ]" X' |
$ s1 L j) c# gpublic class Solution {/ _2 b3 @/ x7 \0 {9 G5 y% B
0 V6 |7 S2 ?, j; ?8 I: h% o public boolean placeWordInCrossword(char[][] board, String word) {
( @* g( X% ^2 Y$ g+ \) ]
0 a- A0 U' q9 r2 [* j if (board == null || board.length == 0 || board[0].length == 0) {
( r. B5 V: w/ l: h/ U% Q) I3 a6 i- D/ a1 n9 q
return false;5 S8 C: J# L! p0 f
- h, K* T" _% K# ?# _ }
) i/ M S7 M/ x9 V$ l1 V& \" A* L v. H4 M2 X/ J0 Q4 h9 c4 V
int n = board.length;
$ H7 |: `% h( k& \+ n
0 \. K( `8 k$ ^& i int m = board[0].length;& O" |; J: h$ T$ ], U' E
# F8 k; Y: Y0 @5 B, g
for (int i = 0; i < n; i++) {, P) e8 ?- G H$ N2 k9 e
6 Z2 C, F. q! J5 J for (int j = 0; j < m; j++) {
1 `7 X: j5 ~- x$ a0 q, o) p% J0 a3 ?
// 从 (i, j) 开始,尝试水平地、垂直地放置单词
' T+ Y( q" C' J6 \' p0 T* t$ j& Y' r' L+ A* J2 W, x% {) F
if (isValid(board, word, j, j + word.length() - 1, i, true) || isValid(board, word, i, i + word.length() - 1, j, false)) {* C% n! f" f/ S8 [
: [. v8 k8 t( g0 h9 D5 P return true;% H" M) `( k# t& i$ h6 g) k
- k4 T3 M7 D6 ~) U } H- w. S) W. ?1 L# J- e
6 e$ D* f; c) S
} r% X! F: u% |3 _& _0 B1 N2 V
5 Y+ |* z5 ]$ }" A# J
}: k. A7 {+ p5 {1 o5 f8 Z4 ?
% V" \" Z6 ~# n5 j return false;
3 K% x; L8 l; z! y8 p# m2 C
2 a0 B' ~& Y- e5 I- { }
. o0 y7 J" i! _* Y1 N" c4 V4 o# v4 q( X4 d$ d
private boolean isValid(char[][] board, String word, int start, int end, int standard, boolean isHorizontal) {
7 K; z, m6 A, E" e' @ J( R3 a, s$ h: K/ q5 W0 |* I
// 水平放置, standard代表行, 固定不动! j# W# ~3 [0 }
$ f8 j# s$ F# I0 s" A% m( q
if (isHorizontal) {
; n& L2 T" b2 J' e! t( n" [+ v9 B" E9 m$ E: o, _; G @5 X
if (end > board[0].length - 1) {% _& r! e, {" e/ |$ @+ w
) g4 L5 y f+ F2 A
return false;
8 @5 Q ~" y+ ?- ]* p9 Y2 o
* z* x9 r9 ^3 x8 ] }
1 u1 e4 E5 K8 I! |' g2 s. y
+ n& e& L5 N5 V1 | g& Y3 G // 如果左边界不越界,检查左边界的元素是否合法
5 J" E; U1 a% }0 Z: C9 X0 a7 }3 b7 _# K5 ?5 n3 ?9 O" g' G+ i
if (start - 1 >= 0 && (board[standard][start - 1] == ' ' || Character.isLetter(board[standard][start - 1]))) {
Y5 f5 x6 s+ I3 J
+ n2 `) ?) h7 [ return false;" D8 C3 L# C% T1 I
! n1 |, j6 [# _
}
! C6 `. j" o' T) I- v1 f* d- }* b; A) m! ^5 }. B8 U
// 如果右边界不越界,检查右边界的元素是否合法
+ I/ B m# {8 ]; V8 ?: u B3 t. d6 S* a) y6 o2 }
if (end + 1 < board[0].length && (board[standard][end + 1] == ' ' || Character.isLetter(board[standard][end + 1]))) {. q7 z* K, u Z' R( y7 |4 }' Z- t
, r+ A( Y/ z( t3 H/ M
return false;
; @' p$ f' y! M' ?- P1 K: o0 o) J$ O9 L, x3 ?+ | n, n
}! V! K/ r9 H, _: i; O1 G' R6 g
|" J. L, M6 N+ Q; S3 m% v$ z# S // 至此,它的位置已确认是合法的了# M3 s! i( K2 T
. a" g* U- V! E1 D* F i$ ]; ` // 接下来,只需要判断 (standard, start) ~ (standard, end) 这个区间 "是否有障碍'#'6 Y3 _, Z3 B. c/ O
0 l+ U/ p7 B4 I, I7 R // 正反都需要判断
- K6 q K$ u4 f# `- V) s+ j3 Q E% Q
6 O9 f b9 X5 J& [ return check(board, word, start, end, standard, true, false) || check(board, word, start, end, standard, true, true);
3 C$ L$ e4 k! I
! F+ P( A2 k& I0 i. ?2 p* V$ Y }
; D) F! U4 M$ f6 K% o4 J4 g' ^( z5 A( o! F9 ?7 I* k
// 垂直放置,standard 代表列, 固定* t. B$ T& _% X+ M& q" q$ m4 V! U" `
/ t$ ^* m+ o1 C7 A" e5 S+ V
else {
, }4 h* b) U7 i j5 Q2 w0 e" X2 O0 r6 D' `
if (end > board.length - 1) {
, P% [$ E9 W7 b& Z3 H
) n& D0 e4 W% ~4 l0 j8 B return false;
% d7 i7 E+ n. a# T' Y
& t1 H( Z& h1 ]0 O4 k5 a( } _ }
# z6 z! a5 d6 k3 d& S% x, B. R" D/ o1 H' T7 e& F
// 如果上边界不越界,检查上边界的元素是否合法
% \: U+ M8 [& c3 H; |! o% E/ {! Y& i; @5 b5 A& a2 D
if (start - 1 >= 0 && (board[start - 1][standard] == ' ' || Character.isLetter(board[start - 1][standard]))) {
. k* T( \& i/ c
5 U; o$ {" i+ i/ D- q return false;
. v3 P* m9 u8 ]# L, ^
1 y) [# z4 ?9 l3 A; ` }" k6 }9 i& O9 t! q8 k( i
) U" m% `$ K# p) E4 e- k
// 如果下边界不越界,检查下边界的元素是否合法
2 H8 a6 c& a6 ?% F
5 w# t5 _# W0 S6 ] if (end + 1 < board.length && (board[end + 1][standard] == ' ' || Character.isLetter(board[end + 1][standard]))) {, }$ Z3 I( Z3 ~+ o
, i3 _5 \- f+ ?+ Q1 o, z
return false;& }6 Y0 z+ X+ W- G" i2 s3 X& Y5 \1 ]
- e3 k* u2 a1 k4 i }: O& s( q8 N* J; K
1 ^4 W7 m) I) y' l! E1 q& M& G3 n // 至此,它的位置已确认是合法的了
7 I( B0 B4 K( F u# j6 h" Q5 y9 F$ N, L: N8 W3 M, h% V: B
// 接下来,只需要判断 (start, standard) ~ (end, standard) 这个区间 "是否有障碍'#'
- Z4 i: D+ l/ o7 z$ Y9 Z
. a* B3 R$ i' j$ e // 正反都要判断
- Z( T L- V. `& ?
. {! r \- r& N( f o return check(board, word, start, end, standard, false, false) || check(board, word, start, end, standard, false, true);% Z* l- F( i- |* F9 V+ `
' c. @9 f! f, ^ }7 S
}
# X" Z2 Z9 g- A; G
4 X. h" D9 t/ J( N( G# b% e }
5 U& x8 y( L7 _; ^1 }
8 {2 ]& E, |" j }; @! fprivate boolean check(char[][] board, String word, int start, int end, int standard, boolean isHorizontal, boolean isReversed) {, M4 S, Q$ c1 {9 t
' C: x) J2 K. h( L5 W9 F9 ^* @
if (isHorizontal) {
) @0 a( f# {3 }6 q1 u( ?% L) ~/ E( O2 F' B$ x, j+ l: p
// 正向模拟
5 H. e& B: ~- K; z* Z/ l& J. b7 ?+ |
if (!isReversed) {" r/ R* ? v, Y
# m8 M" ?. K2 B; n% |, G
for (int i = start; i <= end; i++) {3 [ v- K$ w2 X: G3 A3 w$ L* l
: C) M) N! l4 ^2 B% r# Z
if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(i - start))) {) q' u. S2 h3 ~+ x$ ^; G
4 i2 { p$ D" _* y: s" e0 G
return false;
9 T h2 V; H! z; m
& h0 U7 n- o, s: Z+ X3 ] }
. _5 ?8 V+ C! s# Y1 ^' x
y& @: c a' }; v& U' v }1 M: K% a. n y8 a3 `2 m
7 B; ?1 N' w% M K0 P }: b" s2 q+ I4 u
+ B" Q; ~. |3 a- }
// 反向模拟
" r* r# O9 x! l1 [' G, [! ^
7 f' Y, Y6 C/ z else {
0 F" h- y8 W2 [2 y
6 q3 \( k# d2 h1 z% d1 R: F, b* I for (int i = end; i >= start; i--) {
3 z& a4 a4 O2 R! r( t7 z% p9 S' [2 d9 `
if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(end - i))) { E6 F+ ^; Z! z$ C" [6 I, w
# j; Y: |( C7 B8 }3 c return false;
0 I5 j6 r% y1 I7 B5 W! L
( y0 O) X3 Q4 e6 b/ X# X3 r/ s, q, C }
6 Z+ i, k1 J8 y: H2 e9 o1 v' D/ h. D" f. }
}0 g) K$ s, ]" t6 P4 {0 z
* D! O/ c0 u/ I6 u- h; n/ E; p) F2 Q
}8 p! i h4 {; j
( J% L& Z* U2 H( J; t d }
2 J, P6 a/ Z. h- B
5 V/ v* c4 a0 M else {
: x% O% G% o* B0 T4 f
2 ^- c7 I0 N$ N // 正向模拟
% Z" V! U' a# I, U8 J' R) _
9 L; V2 I# ]) g& ?# v& y if (!isReversed) {$ U* D9 ^3 ?6 n, V5 w' x4 V+ c
& s3 @2 u/ {0 _7 \- Y
for (int i = start; i <= end; i++) {% K2 H7 I5 I/ p, a( B% [* T2 l
% _7 g# m* ~# d! R2 w6 {4 A$ I if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(i - start))) {
1 m, P8 d T* O4 s7 v4 }. e: X6 j* k/ j# ]
return false;
% |2 f9 y) N' X J4 _: @3 i0 l9 X* r
}. L. ~5 O X1 |5 a
G2 d& q1 t/ V q& M7 M( F }
) X' j9 ^+ M3 z2 f2 q* @$ I; a- ~5 `4 P% i* K+ W: L! ~
}& I3 b# U, q7 G% }0 L
. o" w* }4 |! J // 反向模拟; R0 O" v# |4 T% h3 B+ E$ c
7 c2 _5 \ M' s
else {
8 Y+ k* m) y; Z$ l" \, N) P+ k! ~
for (int i = end; i >= start; i--) {
) A F2 y e- s% \+ @1 t g4 i! W- |% s+ A- \5 o, \
if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(end - i))) {
0 ^4 m: M$ J+ g5 l! [
; v0 `! v" f0 C+ R return false;" n+ ^/ z+ R6 v7 ~2 \# Q
: A. U' Z5 }! N5 d7 V* W' {2 I h }. M( \* Z/ Q, R2 b0 O4 i
6 \; }, y% y4 c }& w. F% x8 {" U
7 {% a* l/ F8 ~' `1 l5 `
}3 W: x/ v2 m x2 ^) i! g( D
: S% ~$ \6 ~2 q( [5 p [
}
2 G4 D' i# i0 s- U" Q) d5 s% `! b, m8 K7 z# i; J6 ]
return true;
$ K3 }) X( O* `7 o; H6 f2 v) w- s" r
}
* R3 M. E0 ~ u, K/ [4 `( C k; n' B
}* h! y: e) ]) v5 h7 S) C# n% w
, N' A/ L$ o" d1 X0 z6 e- b; n" ]
* _. Q; j7 B* B, `0 `. b- o+ B【 NO.4 解出数学表达式的学生分数】3 U5 Z2 C) H' W
5 f8 i0 @) s" {% f Z3 `+ H解题思路% z& n3 |- y. @. ]
( _/ _" x5 m& k) O首先理一理总体的思路,我们需要做的事情有:1 a, ~4 ?% b C' k5 j
4 H8 W- J0 j b; p
; _" D/ w% x9 f# ]1. 求出表达式的正确值:Stack的方式解决
" t0 Y' m% o$ I+ O7 G. W s2. 求出表达式所有可能的值:区间型动态规划解决1 l# U6 ?" g: q" W( o7 O
3. 计算学生的得分:计分即可, S( A" q6 z( H+ L; h
代码展示
' p$ |& I! J g" n [, r+ [ Q9 E( a
& c; i& P0 a( g5 i# h/ A" c- Zpublic int scoreOfStudents(String s, int[] answers) {
P; e2 e* N' s! |# W O6 x6 B0 [6 x5 I
int[] count = new int[1024];& i% {5 N+ k7 \" W
9 G! m6 w/ M4 Q" {) n, v1 r% ]! Q for (int ans : answers) {+ h! C" V9 D' [) w- [; p4 J
, T& z3 n$ k! d# `
count[ans]++;; q; g0 [/ U+ Z# d+ y, d. a; ]: N
& g. t3 s- V* o& n& ~$ Z. S7 n
}7 G x2 o9 X4 Z
4 G4 W7 K( C4 O6 `" ~# Y Stack<Integer> stack = new Stack<>();
# a, I6 b/ r4 k s0 Y0 \7 d
. @2 t, R1 d( ~3 Y* q3 ?* Z5 [6 L3 \ stack.push(s.charAt(0) - '0');
) H: i ^ E9 J8 r! @
, s- g5 \! ^0 w% E+ ? for (int i = 1; i < s.length(); i += 2) {$ Q- X# }" Q3 D. D9 ]
' h; K n h! [" N
// 加法暂时不做,存在栈顶5 j; m- i" Q* g2 c/ Y4 a
1 h: N; K! f! l- y1 ~* O$ m if (s.charAt(i) == '+') {8 `" {- j. `' @! _* T, m
4 u0 l) q7 ~4 t% I stack.push(s.charAt(i + 1) - '0');
& p2 P9 ~% Z6 |3 o; [5 i
" q7 I. H1 I4 j }
1 V4 V1 Z1 Q8 Z, Q) K3 ^& a# j
" F' R5 R5 |5 M; b- b. e. k- f // 乘法直接运算
* ^" N# [2 m8 b! H% j4 h! u1 [; J6 i$ F8 N4 [! v; \
else {
0 }. f4 b) z2 R' ~. Z" V( R2 |" s C# Y& }, m
stack.push(stack.pop() * (s.charAt(i + 1) - '0'));2 z- z# `2 ^/ `5 j; @" k* `: w) u
# ~2 s8 R6 k* Y
}
+ g( j( z+ `1 Y, L6 M+ I0 e
4 E# N# a$ {: m5 I" D2 S8 H9 H- y }
- m" j) f$ F) d9 [- Q- E2 \1 j4 ?, N% a8 X# u- w# |
int rihgtAns = 0;1 E% ~4 B2 J0 `
3 ` P$ D: E- c# j' S y4 W* w while (stack.size() > 0) {
) X+ m0 s( D4 D4 e+ p" w% P/ K/ v, V
rihgtAns += stack.pop();" v! Z$ p t+ l+ }* V5 A3 F
4 B+ U: Z" B7 M$ o7 I0 l+ I
}, {5 l) R: F$ D
* m$ Q8 N k' Y1 a // 计算正确的人数积分* j* g. H! k( ~ z6 {
2 X4 y7 g4 N, X* n2 ~
int res = count[rihgtAns] * 5;
$ s. A" ^7 o8 g0 S$ o, X6 h, C
; f! Z& ]! z+ f/ x$ m5 N, _$ X
; T7 z) B2 _) M; U5 ~4 H4 j) ^
// 枚举所有可能的计算结果+ y" i% l4 ~- s! g. B+ x
! N( h* M' k5 E8 r/ p0 i
int n = s.length();8 j# z0 O$ _/ w2 J' @
0 F9 b$ O2 p: j
Set<Integer>[][] dp = new Set[n + 2][n + 2];
5 Z# K$ b: F' Q% Z- I$ G/ X! B t0 ~% [$ a; G, r* J
for (int i = 0; i < n + 2; i++) {, K: n1 W% E7 Z5 ~: D% w+ E
3 a5 E5 u4 ?2 T for (int j = 0; j < n + 2; j++) {
$ q5 l, w9 q0 d3 l4 Q* {/ x$ A( W `2 X6 c/ ~" }1 D1 |
dp[i][j] = new HashSet<>();
, }0 i0 G/ C/ E8 L! B& d5 c1 v! D* p) A% \6 [0 ^
}
& G3 j+ K- \3 q o5 I. Z4 K9 C+ n" A1 f! z
} b, y3 q4 t+ _. D
; r4 c9 v0 K" K3 @ N( E% l
for (int j = 0; j < n; j += 2) {
) k0 Y6 I2 E$ e$ [6 z" O I
0 G- ]! I6 l% ^% j. x9 Y dp[j][j].add(s.charAt(j) - '0');( M" V, ^: h0 ]- n3 k6 q3 a+ q
' X2 g$ Y. I- Z, f
}
6 I! a! ?+ I! s& X4 m Z) t3 c4 t1 M9 o" }9 h, p Y5 F
// 区间型动态规划* D; x5 j4 t- z/ a/ z: {0 g1 T
# Z; r& o2 W- h9 M for (int len = 2; len < n; len++) {& T6 }4 J% n% ?3 @, W9 w
$ a2 y6 H- Q' w! X
// 左端点 i
8 I% l0 j5 i: l0 q( I+ H, z+ r1 i3 w% [
for (int i = 0; i + len < n; i += 2) {
& C- a+ A* X& E z/ N) @) X! R- V$ h0 n. x. I1 e4 t ]
// 枚举左半部分的长度
* e1 P/ Z8 R1 N5 q: x+ T/ {% w. q# H
for (int leftLen = 0; leftLen < len; leftLen += 2) {( R: A W. `, y: ?- W3 v
3 R+ P1 E9 C! g! ? // left 表示左半部分的值
8 A/ V/ o' n# f% a/ }
9 K) f+ X/ d- m6 q, K7 {% @ // right 表示右半部分的值
7 j, f. v7 b7 G$ Y5 i' L" k3 C2 \0 g& P$ s% V, F
for (int left : dp[i][i + leftLen]) {' W1 p' w) v$ W" g+ Y+ S6 v, @( z* @$ d
) W' P( j9 |# T0 C% s' }% f) a3 x
for (int right : dp[i + leftLen + 2][i + len]) {1 X. t- W1 j- }; l
" s4 H5 l- `: ~& y ~$ {* W1 m J
if (s.charAt(i + leftLen + 1) == '+') {7 \' k( ? H8 r- Y r
3 T j$ D, o, z3 \7 D
if (left + right <= 1000) {
5 i5 X. g8 J N8 B/ ^% ~# [- _
! |3 M, `1 R, E+ x% ?2 n" v) e dp[i][i + len].add(left + right);* J U3 Z$ E" t* h
) S! X: F4 n" h/ ~+ W1 e
}
& N( z) p0 Z; |* r1 S. L/ W& f
} else {
9 _" E2 j6 O% O6 t- _
4 K8 M* J E7 u, a1 _4 z3 m if (left * right <= 1000) {
, h/ v8 O& s; _1 o! ]- X) b3 F! `4 a/ P6 m2 t
dp[i][i + len].add(left * right);' \* F7 n8 r( H
7 {: E Y2 W; `$ C& V }
6 y/ }/ A/ G, r5 q$ A: D- M
" u1 R4 ]9 H6 W- u7 M4 x, Z( y }
" y& C: M8 E$ ?1 E2 `( a, F' d, Q0 i( X$ @+ \
}. [# o1 o1 G. O% u5 \. d' Y$ D
4 f! j. Q8 r# e* c7 b
}
7 |6 H8 v) n0 O p& o. B1 `
1 p5 @" ?7 i2 e }! ^2 a8 |* X9 B: B. B0 r! `& X
8 `5 D4 i1 X8 d, D1 s2 }" s
}7 _+ M5 |6 n; f
8 r4 q4 ?- X" S/ {
} ~! }) H8 c% e1 ?$ c" D4 J, O
( z, e) _: m2 h/ E8 ~- q6 U$ c2 s6 R4 v9 C9 ]/ _7 z
+ X7 O+ l p. s( o# Z% @ for (int points : dp[0][n - 1]) {( m+ M- X/ [3 N
) q% `$ Z9 z& t- e if (points != rihgtAns) {& Q3 Z y, S, W: G4 i
9 `6 u; y! L* h! p" B1 Q
res += 2 * count[points];$ {5 G+ I# X) N
1 c) F9 h/ D' [
}# \; r# D& D3 Q7 T5 E$ u3 j/ c8 S
: i9 |8 U. N8 |/ K9 m B, [
}
/ A3 G0 p0 Z8 U
& Z i! r% h( g! _1 J return res;
/ q; Q% B* Y9 b
* Y* G4 G- H7 @$ O" K% A } |