登录后可回复主题
您需要 登录 才可以下载或查看,没有帐号?注册账号
x
【 NO.1 增量元素之间的最大差值】
. m h# S0 t- \/ D$ |8 F8 J; D0 G4 N+ Y: G" I' {
解题思路
4 J' a- g5 Y) |0 D0 [+ v5 D遍历数组维护全局最小值,若当前值较大就是一个合理的答案,遍历过程取最大的合理答案即可。9 c, S) C2 Q4 r
! O# Q' R1 u, y6 H$ R
代码展示* \' s# u: d \3 H# V+ d$ P* ^; I4 A N
6 {- v' G7 @' qpublic class Solution {
" D' K! F6 D6 `! J$ X6 S public int maximumDifference(int[] nums) {
. h9 q, V6 J, S/ t4 M! n( m if (nums == null || nums.length == 0) {
# j6 |; X, U; k2 q( K7 I+ q return 0;
# Y5 [ P I1 Q: X, r% t; ~ o }5 A0 w6 `% g* {: J7 L5 |
int res = -1;+ |9 A3 E( Y0 l3 Q- @. \
int minNum = Integer.MAX_VALUE;4 M* c0 G9 n( j' t( ^' A% O/ M0 K
for (int n : nums) {
. i# S$ N" M0 Q. {. L1 j# a( W if (n > minNum) {9 ]( C: ]+ l% s* v8 I% P
res = Math.max(n - minNum, res);
/ [9 }% f6 ~: o6 t ]# ] }3 W( x1 w" \8 D0 E9 C* J
minNum = Math.min(minNum, n); k9 k& }. Q4 q0 u5 a% I2 ?
}
. U ~8 U" p% g K return res;
% U! ]) Y( @3 _$ ~! f }
z( {1 D" j" K3 A0 d+ P} B t, X+ W" X* E1 O
* g% P, L! q. d
9 |' x- }% @. |" }8 \【 NO.2 网格游戏】
: P, l7 S$ W8 [; f
2 C& q% Y& n3 m1 N& }/ ]: s解题思路
3 e" P4 |& v; L4 M注意到网格只有两行,所以第一个机器人需要选择的实际上就是从哪一列向下。在它确定了向下的那一列之后,第二个机器人要么只能拿到第一行开始部分的分数,要么只能拿到第一行结尾部分的分数。
5 q2 k) R( {4 l7 U% p* g2 z+ o7 r( U: Y5 |
代码展示3 H7 l' M# \8 d
: L B B) Z% ^1 I1 @6 H6 k1 Qpublic class Solution {: F- x0 H; e; c! D' e& }
public long gridGame(int[][] grid) {
: @9 |( q' N- e) `4 x- T% Y if (grid == null || grid.length == 0 || grid[0].length == 0) {
: N5 r5 m. x( k {" g& p5 p" G2 [ return 0;/ S( e; b0 |' F) M- c6 W% t
}
8 ?* B- f9 e5 O" j$ J int n = grid[0].length;: z _/ d, ~' ~
long left = 0, rihgt = 0;
$ Z5 E; [8 @: t K% b# w for (int i = 1; i < n; i++) {
4 f/ F% p( \& N) h- H# K' |/ V7 v) i rihgt += grid[0][i];2 V# e1 E/ j; N* C' ]
}
2 @, |& U) s8 ^" i9 H long res = rihgt;6 g6 P8 J) V# D1 s, T j" ^9 K
for (int i = 1; i < n; i++) {4 Q9 v. N: d, [, C
left += grid[1][i - 1];! p$ N0 a3 \. \4 h* V
rihgt -= grid[0][i];
3 E2 N4 e. I: w' }) E2 | res = Math.min(res, Math.max(left, rihgt));, \# ~7 n1 ~3 R2 u
}
3 E3 x( ^$ G& n4 C( G return res;
- _& I$ ? S. A3 i( H }
# c0 o3 x0 u' Q/ B6 ]" U. d" H# L}
: f3 t4 l" w( K
1 j. ?+ n: o" v/ B7 _% k
' c4 ~+ {5 x* R! s' J7 j【 NO.3 判断单词是否能放入填字游戏内】 F; B7 r3 h9 f
4 m9 c, U( C. v% k& I) c0 r9 E解题思路
. q: m$ ]( u/ _+ n0 B8 [: p模拟题,详情见注释。
" g6 N9 J- \9 v/ A' B) r7 B( S+ c! \" d' z; E* c) q) U
代码展示
. w. a V2 [! M" p
) t# o9 |0 @* p5 @ M+ S9 Lpublic class Solution {
2 t) ^* P0 g- b1 |; q4 R
: K5 i p h6 l+ \, |* e N! }5 e public boolean placeWordInCrossword(char[][] board, String word) {% M; k. g; o/ j. L8 }( P
' q; m; g! ^$ s! ~% u
if (board == null || board.length == 0 || board[0].length == 0) {
/ r. f% f! p, ?( M& X8 n* Q; o8 v) v7 a/ A+ Y* n
return false;7 Z/ _7 U" q; r+ G- O
" p# b0 d+ s/ E) k& p }
( ~3 ?5 }, \* Q6 ?, g8 X5 _4 n" `# }; [: N9 \% i$ y/ h
int n = board.length;# n: ~: n6 X2 z) z8 K
8 b# \ K2 t0 T3 g, p0 F7 S3 f3 s' @ int m = board[0].length;: l& M) e# q* ~1 i+ O2 M
- C& D. ?' a5 R9 g+ f: T. H) z
for (int i = 0; i < n; i++) {
* J6 B. ]+ w6 z% J( p' \8 Y1 {: n# N
for (int j = 0; j < m; j++) {
4 N+ j/ K: F0 t( r& E3 |3 {- d
* i& s Z/ X0 s" o3 n // 从 (i, j) 开始,尝试水平地、垂直地放置单词3 a3 ~5 C7 F" ]. l9 f' S
4 L1 J! R4 [" N; q" k if (isValid(board, word, j, j + word.length() - 1, i, true) || isValid(board, word, i, i + word.length() - 1, j, false)) {" w7 {( i U/ N X+ p; z
' d0 i' v0 |8 @1 k" k# P' F7 F
return true;
/ S. ]! K/ t+ ^4 i8 k/ m# W; s3 G$ e0 \4 _; t, _0 g
}# A5 Q6 t2 l# ~- B* |9 j0 T
1 \ F* Z; l1 c. a
}% A Z' P# @5 D; H$ z* t" n G9 R. z
1 A& ]; J7 O: ]) G- g, b4 I3 E
}) ` }* @$ {, A5 p
4 m% F% k6 h2 h' g' O3 O |" N0 Q return false;& ] K, S4 g8 L# f" {2 t: J
0 T0 z `* u$ [% a+ g }
- ]$ i, X5 B; Q/ ~$ l1 Z9 }& [& _ s; @" q
private boolean isValid(char[][] board, String word, int start, int end, int standard, boolean isHorizontal) {
8 K3 {( k9 g/ o" q/ i) m
5 r5 P: G: y) F, X6 s& L8 q# o( a7 c+ C // 水平放置, standard代表行, 固定不动
; z0 j7 m/ d. W: d
" @/ P: L$ ~- p$ L5 J& L/ \ if (isHorizontal) {
4 H3 Y9 g' _ X6 [
2 `1 u0 a* k. e" O1 P4 H* R9 Q if (end > board[0].length - 1) {
1 T" s4 T* O5 x: F' z+ Q. X3 @9 U B6 m" x5 Y& s
return false;
9 f! u3 u6 B4 R6 G0 ], D+ W& C% `6 i2 H9 _7 h- O
}
0 i# n( J& ]4 u: m. O1 ^% n F# Z5 ^
: D2 ?& ?# _) O3 g // 如果左边界不越界,检查左边界的元素是否合法
z% `0 A* d2 {4 Q+ K2 W1 b
6 u- C; m5 j: ^ if (start - 1 >= 0 && (board[standard][start - 1] == ' ' || Character.isLetter(board[standard][start - 1]))) {+ L6 z1 Q; c j+ k' L* S3 ]
. n- a- v) m$ R9 I& O/ h6 C
return false;
& h7 Q# g* E: B6 Z
L h) O2 \0 }& L }, l% y7 K& A, e D- k) l% l
/ h1 h; s# |5 u% F2 {, m // 如果右边界不越界,检查右边界的元素是否合法5 N# K( u! o# c1 s3 d
/ L7 b/ K9 L+ ~ if (end + 1 < board[0].length && (board[standard][end + 1] == ' ' || Character.isLetter(board[standard][end + 1]))) {
) |9 D& r+ p' N8 `9 J
/ Y- `' E; K/ `% l+ X return false;
6 J8 a& s8 @& a* n/ [0 P: I) R8 G2 s6 L
}* [6 m8 m6 b e5 D( X# }
% M0 @% x7 [" g9 i# A+ `
// 至此,它的位置已确认是合法的了
1 \, u* b7 F+ y$ A1 E. n
: p+ A+ z+ y' a // 接下来,只需要判断 (standard, start) ~ (standard, end) 这个区间 "是否有障碍'#'
( m3 r" @. W( Z% i
: C- x: P0 L% C+ X6 b( P1 J4 X; O // 正反都需要判断& `( r. T( e6 N, D/ d$ s6 \
8 }9 `1 j1 E2 l+ h! m return check(board, word, start, end, standard, true, false) || check(board, word, start, end, standard, true, true);5 z1 N0 p4 Z# z$ O* ^
1 |, q7 j; N2 F2 D4 `; p; f- r
}
8 j& s. e" {% u8 u' G% a3 u# e& s2 W, m6 R
// 垂直放置,standard 代表列, 固定5 s( O' g! c- t+ f; j
) @* _5 f6 X0 f) I. f6 N1 N; f- e
else {! A' @0 E5 P2 y* ]
" d; @+ i/ ^7 {( n* V7 Q
if (end > board.length - 1) {
! `' m( \+ i% x/ n |) \: ~8 Q; C, Z9 b7 R9 r3 h
return false;
- ?5 R' c ^& A) W
7 m8 Z7 l- Z) l& C& l( v5 y }9 q5 j# w; y/ D- N
7 y5 P' [& k' ~& ? // 如果上边界不越界,检查上边界的元素是否合法
1 _$ \% J3 Z7 S2 l. K1 H" \' p. f0 I, d1 g3 }
if (start - 1 >= 0 && (board[start - 1][standard] == ' ' || Character.isLetter(board[start - 1][standard]))) {: Q, b c) k' a0 `9 H
5 I/ o; e& x% g
return false;
4 V) b" W, J! l; t! U, W9 ^3 O7 R+ H$ @" E2 G% w
}' I9 z7 q8 T S* Q# @" h
0 P9 f t) X8 `- R // 如果下边界不越界,检查下边界的元素是否合法. t+ v1 M* ]' r
0 D c4 @: `4 K0 I
if (end + 1 < board.length && (board[end + 1][standard] == ' ' || Character.isLetter(board[end + 1][standard]))) {
7 R- ?# Q$ P! C8 x
+ U3 {8 N6 e; P+ @9 N" m { return false;. T$ @& }9 \1 e$ Q, l
9 `$ `( D! `7 W% N, J) a
}
$ o$ Z) T7 p/ g8 L5 w2 l$ {; o+ I) V. b7 g1 P; I( T
// 至此,它的位置已确认是合法的了$ D7 ^& f9 b3 c: _- B
! N1 d- N+ y% F, j5 E | // 接下来,只需要判断 (start, standard) ~ (end, standard) 这个区间 "是否有障碍'#'
( ^$ Q8 c( n/ C" h4 T" W$ R* P2 A
" N, y, R: B( N* A+ E) S // 正反都要判断& e8 c$ O; ~4 J6 v" _* ?& l! Q! s
0 `* s* s# M! I% f! Y return check(board, word, start, end, standard, false, false) || check(board, word, start, end, standard, false, true);
# h5 _3 U( N0 s
( a+ x4 D: }2 g( X/ H _3 y* D }" k I& V/ o" {3 [" Q% X
! {- {9 d, q1 w( a* ?) n" R9 r }
3 Z- C0 W! s( {- g0 T$ x) H6 W- {. ^- H. V0 j' n3 S6 E+ f# c
private boolean check(char[][] board, String word, int start, int end, int standard, boolean isHorizontal, boolean isReversed) {) J+ |; Z2 \, }
4 v7 z: V% A- W5 m4 G8 u
if (isHorizontal) {
0 e7 g/ {* N: ^; r% t2 ]! N% O) j
. s4 a6 J" X$ ?% h // 正向模拟' B) U3 P, q( _, Y
# F# j0 E* ?- M. o! b if (!isReversed) {
' G; S' P3 H' h- C' {1 P0 @
|0 e% X/ m& \6 U1 s) L& `$ o8 l for (int i = start; i <= end; i++) {
" e7 N" q! d# f+ p/ R9 _5 [3 P7 b. `1 ]6 |1 E6 d9 T
if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(i - start))) {, C, M, g; j s
1 q; K) F4 P* A! P+ J) G( _
return false;
/ s4 S! H) y# X. T0 W. J! P2 I: c/ n
}' z) @( n7 f" }8 ? l
. \6 C: f) N1 V% Y7 r9 e+ ~ }
3 v' ]9 @2 Z; x$ V+ w( l
, w+ v7 A8 t+ B! m. S& l }
* t' U6 n% \, y/ v
. Z2 Q/ Y3 X C! v) g' s // 反向模拟
, H' _: ^) G4 K$ ~8 L( m9 e; P# |" z
else {3 S* R9 ^2 S0 f
( o9 |+ a3 g9 I) I1 j% ^ for (int i = end; i >= start; i--) {
) s& ~% F. K! g+ G! `
( M; s" u- X4 e# `! W7 e if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(end - i))) {
& I. v5 t1 c! P5 o
: l' ?! P7 \% e6 R return false;$ j6 l: K; x- o
$ O+ a3 i. l: D! x
}
( @- \7 f1 I0 k2 H7 N) g% H' u5 J3 D7 e5 I7 Q2 z" `+ q7 c
}
! s6 ?: N1 I! [+ V; w1 ~8 f. j6 }: e0 q( ]0 t# q* {
}; g( M, s; e. c: E1 f0 x
& K- [1 i! H0 n$ j' _1 E# x
} Q: Q) U* y! B1 ?1 v. s
( S; F- c+ f/ d3 w' m" | else {
2 Z4 j V( O$ e
7 ]: s# \# Q3 ^9 B2 n& V // 正向模拟
, D! W) r3 K5 `+ d E# J: M. q& g8 {5 Y) ]" b5 u
if (!isReversed) {
, w, f r" K6 C0 z- e1 j( C" F% M9 e' G; _
for (int i = start; i <= end; i++) {
$ H5 |7 M7 f! [1 K3 k( }: m/ Q) |+ t) N6 H- u4 U% e
if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(i - start))) {4 h& B$ T) k& A$ A" Q2 `3 [( C
" w$ A$ F; f, a& Y( Q$ Z return false;/ N, b7 l, L, y6 K2 T' E
: G `8 r7 a$ x }
1 J9 s7 i1 X b, B$ I' l
3 T! j* p- \8 s3 O& G9 ? }
8 y/ k5 ?, V! d' B8 O9 C8 w; U ? e3 ?7 \3 r
}1 X; @$ ~1 y: Y% }0 z
. a- a1 l/ C, F! U( `, F
// 反向模拟! D T& M! `' z& [% U& ?9 z6 P
+ {5 h6 Q3 A3 }
else {
7 r8 _/ C5 ^; `' V
0 ?: q4 b+ V) t7 t( Y( T/ q4 p for (int i = end; i >= start; i--) {: z+ W3 x$ `- P% h/ H! Q+ u
, ~, F3 g. o# q0 E2 d4 m if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(end - i))) {8 ], E7 s+ |# R% a
; i4 q1 `7 u8 s9 r$ I return false;
" U" Q( F, m5 e, L0 h Z
4 R1 ~5 p( y/ r* k } ]6 x3 ?: S. J- y8 O
z5 I7 c& M7 Q" W
}8 p, H3 ?2 j9 a; h
' W$ { i+ k5 J4 S }* b2 `) k3 v7 d3 L8 X# h
+ m/ E' K+ a+ x C- v0 y* T8 w
}
, e5 y2 R) ` q( L* H4 n7 J, c" O1 p/ Y1 d
return true;/ _* S* }" \. A# X/ r# X1 T6 j
2 C9 B! V' z! n4 {' h8 L: I7 l
}
( f) ~2 y) s9 p. O2 t+ S6 O
6 f) z) ^/ s" E$ l. I+ X}
; L- V/ U' L8 Y+ Z& `0 ?+ X" ?0 k- r- P$ V
$ s5 y4 {6 U- [
【 NO.4 解出数学表达式的学生分数】7 o! z# e: r5 K! @, |% ~
) w) ~4 d! T0 h解题思路- q( }2 D( s3 Z) f- K0 f8 F: Y9 T
3 X) ?8 t" R# z3 H7 S; p
首先理一理总体的思路,我们需要做的事情有:
1 F1 L* m$ t0 f3 u1 q: u
/ c1 z* l) W/ G& {$ N! V# l8 z) R7 b' u! t [
1. 求出表达式的正确值:Stack的方式解决
6 h6 Z- u7 i3 f7 O8 g2. 求出表达式所有可能的值:区间型动态规划解决
2 r6 z/ f. |2 H" z3 C- m& G3. 计算学生的得分:计分即可. Z: V0 @* [( b' L8 l" K8 ^7 F
代码展示
0 B1 ?# {6 f0 {3 ~" ~' j( L/ J9 x# v# A$ Q/ [* P
public int scoreOfStudents(String s, int[] answers) {
- R: N' n) {1 I7 ]
) h4 O& r4 Y) v6 m; z int[] count = new int[1024];
+ x) b0 @8 h5 Q3 P5 z: W9 W9 T
2 Z- Y1 T% v- Q4 l for (int ans : answers) {5 X, Z$ s0 n2 f3 Y
% ^: q ?: n: w4 l1 e- w
count[ans]++;
" p8 k5 S3 ] D) b
! F( l% j' {) s& E I. A }
/ Q+ d# R* i. ]0 G$ |& T/ m. _; C, D7 |5 K! q+ {
Stack<Integer> stack = new Stack<>();3 `( t) F# X! O( s3 S9 H) c
: A4 E. ~9 H1 m9 Z! W
stack.push(s.charAt(0) - '0');
! v. A) L, ~" G% t* Q3 y, `5 Q6 x% B2 T- e: v4 ^0 L9 u
for (int i = 1; i < s.length(); i += 2) {8 A6 E+ W/ b1 X* d7 O
( x) |, \* Y+ f // 加法暂时不做,存在栈顶/ _% U2 t/ ?$ h- e' J/ S2 w& u
- ^) _. `' {2 g2 ?0 m- T! z
if (s.charAt(i) == '+') {; k1 L+ R$ @& [+ y
" L0 v4 J9 D. E7 T% k8 o
stack.push(s.charAt(i + 1) - '0');
0 `# a" h- f7 C9 }( E6 t! t7 g* d3 E( w
} N( z6 ]1 D; e: n. n
& r$ I+ g9 |' t1 r) b0 _! A
// 乘法直接运算
. b; |4 r7 J+ j4 ^1 K2 B
# I ~. q/ p/ \% ~4 O: H" N else {
2 v. ]8 E* U% l5 _
- ^/ t9 [3 h0 Q stack.push(stack.pop() * (s.charAt(i + 1) - '0'));
+ I; ]$ N; C( f5 }# ]& X
# _6 z& t) q7 G+ S }& L2 |" Q0 u0 R% l x1 l1 u. ?
p3 E# a( {, U& }1 `6 v
}# }& z, ?7 p2 B
5 i# j' o( r8 u
int rihgtAns = 0;7 B( U6 q4 {4 C7 x0 b
8 u& f: h- H) k6 L Q/ _
while (stack.size() > 0) {8 |1 u/ R1 _ C; @" l8 Y! c" n
2 T5 k7 ^* m3 _
rihgtAns += stack.pop();
' S# i( m6 t. B5 X6 R. Q, n' h8 X0 z( }/ S1 }
}
. w) H) w h- d; _4 m% L% C h! L& H8 g6 h" ^" ?- h3 j6 g. V
// 计算正确的人数积分
) p$ d; @% h. y/ w( d8 _ ~
" }5 M" Y$ I5 Y; E" M$ G% O int res = count[rihgtAns] * 5;1 b+ [, F. z$ {( l* x5 E) ]
7 F! o! A7 U" M- q1 v: W+ `# o
+ c1 g+ I& G. K$ S g( f0 Z/ E; K e# K; A( z) ~- `' U& ~! j
// 枚举所有可能的计算结果
+ Q% I8 z# H3 h2 @% D! h
1 ?' B$ G/ U, l/ A$ w' |0 h int n = s.length();
$ G: x; u" H/ f3 |5 J- Q- p# b( I, a* g: k& L
Set<Integer>[][] dp = new Set[n + 2][n + 2];
& v9 f7 E9 Y: ]
" y: X0 a- K0 x$ {: ? for (int i = 0; i < n + 2; i++) {
6 X+ U" C3 F2 m" C; D! E. `. ^+ c8 Q
for (int j = 0; j < n + 2; j++) {* t/ J. q/ I+ b/ t
5 S" B$ v8 N; s, \+ @2 l dp[i][j] = new HashSet<>();
" D& D" g" I% d2 A8 _7 G+ L
& W7 p- X1 j; o3 Q6 T6 l o2 F }
. D6 y! G6 C; T4 o$ [) e5 s6 ^) I6 }
}
) H. ?* T0 p! @3 J _# i% z! f. ^2 j' r/ ^. ?8 \
for (int j = 0; j < n; j += 2) {/ }) m! T) \" q1 ^# N5 }( `3 K
, s0 x, v3 a7 `" F: L
dp[j][j].add(s.charAt(j) - '0');! [0 S0 r- f, Z) z/ M9 n
j: c" E7 u4 Y- j$ u }& d! w5 r m8 |, f4 s$ ^& B
9 _7 E; i4 A$ K
// 区间型动态规划
$ q+ O0 _$ r8 z5 ]# F% r. @6 Y4 u1 P/ {, P
for (int len = 2; len < n; len++) {
- g2 ?; ]/ u" U4 D
& e8 a' k5 s+ I( q s6 L4 N( c2 j // 左端点 i# E, s9 a* x- f7 K7 D7 g6 t. l
: H% L! B0 S% ^' N/ ~( V* Z for (int i = 0; i + len < n; i += 2) {
6 D1 Q& c! f0 I7 P4 d" W; T. b
2 p: }# }4 _0 o& s; D- K) ^% Z // 枚举左半部分的长度
7 X! V* X* n7 n U( u; K3 @$ W- M7 I- T4 X7 E& f6 Z/ |. W
for (int leftLen = 0; leftLen < len; leftLen += 2) {8 N8 c7 q! h3 n0 g
$ i3 R& r# D& C. ^. h) @+ [1 o
// left 表示左半部分的值
) C" I+ |1 b, p! v3 K( [# F, c, C
0 j& C% M9 R8 A: O- L! X+ ? // right 表示右半部分的值
2 O7 U0 P+ k, S% s% F( W7 D$ A! a
for (int left : dp[i][i + leftLen]) {
1 W9 {, o% G* l/ C, X8 U
- }* X$ ^/ m/ g. I1 y- b8 Z, S, \ for (int right : dp[i + leftLen + 2][i + len]) {
6 J p6 z+ M$ C/ j& s
% a" l8 O/ _) _) T( P1 c# W if (s.charAt(i + leftLen + 1) == '+') {! }/ L* G* h( W' | p
: }( Z0 N; B2 C7 n) a1 m8 W/ u1 ]$ T
if (left + right <= 1000) {
9 i' C0 j! K T' C) B7 l9 G
& x& S5 q" m% m2 P/ J dp[i][i + len].add(left + right);
- l( E7 N. a" \8 h# E M* y
5 }" v% x$ W2 y" z }) I! l- }6 w: l8 \3 e: _
' g( m6 I% f9 C' y) ~ } else {
; U3 O) n" {7 t; o+ N, a( M6 j9 s) [8 b7 r
if (left * right <= 1000) {
5 n7 r* n+ ~" u* H: q c1 y% o+ K4 r8 @2 e( f
dp[i][i + len].add(left * right);
: D5 J& N8 E- P8 ?
' j n, w9 K( a& x6 D }* r* A0 m% i/ c1 S7 u/ G
9 S) G2 j+ f% u+ x }. _& ?7 s5 q. c; Z( H( p
0 U% c* I o' e1 E, Z
}) \% B0 t1 q; B% A8 s2 i
z9 E3 e: S* p9 F+ t" e5 U, B
}1 E7 S2 e7 o- j& J8 J0 L: a# j
" A+ u3 W) d% z
}8 H, Y5 h/ m" s2 x9 E) z% |
3 L* ^1 C1 f+ Y& V) U
}
% _+ R5 s+ e6 d Z/ i6 I5 m7 m
/ b+ ]: e w$ v6 `. |, L }
/ a R& k$ ~2 L& D
) U! k) J9 C7 X9 x7 Z G$ r$ i6 C8 [. L4 y1 z$ H
9 J. A( w- F8 j8 p0 F9 a for (int points : dp[0][n - 1]) {8 M5 {! _4 R$ P
0 p" O' S7 b, Q* R% ` if (points != rihgtAns) {* I5 Q/ g% v4 k' s1 E' ~
- l# W6 [/ H- g, K5 E7 p7 t6 K, o res += 2 * count[points];6 n9 s( Z" _' \, U' |! |
9 {) j5 L. `5 k% q# g4 P2 K }
' F k* {# g: F- `0 G
2 P3 l% L! e/ x+ Q }' D" s" q3 c7 Q
& i W3 s* R/ v7 w) S6 B return res;+ Q3 k6 z! b( I! f! V( C; E' {
: y/ Q4 B# ?' Z# N1 Z# E. D# P
} |