登录后可回复主题
您需要 登录 才可以下载或查看,没有帐号?注册账号
x
【 NO.1 增量元素之间的最大差值】
# l; \; p4 x" e* U! _, {# x6 ^; a8 ?# h3 o7 M5 O. q k
解题思路
) Q( n, |. f" A9 q6 m* P遍历数组维护全局最小值,若当前值较大就是一个合理的答案,遍历过程取最大的合理答案即可。
# w6 e9 U0 v( P- g
; c& h& X Y5 f2 H代码展示+ j% V; j+ n4 h4 S
; X# K0 i! R: x: |6 }
public class Solution { J; j# _$ q& Z! K
public int maximumDifference(int[] nums) {
, g& ^, c/ i6 q: E% t! _/ ~ if (nums == null || nums.length == 0) {- e3 u+ k; ~. C6 Y2 ?
return 0;
- }* s k; H: e8 S }
5 B# g. F$ O. M. _& ?; Z int res = -1;
: x" G9 r4 {* K/ S/ f1 `: n int minNum = Integer.MAX_VALUE;
- |, ]/ |3 ?6 ^8 S0 T for (int n : nums) {0 o6 y$ n7 d& F- V- k/ w+ V6 Y' ]
if (n > minNum) {
: }, S0 |( D7 W _' l: u res = Math.max(n - minNum, res);0 k- V/ d" {' m1 ^5 y: W( Y
}
d! j( B. @1 Z minNum = Math.min(minNum, n);6 J# Z+ C/ Q6 M5 R' v, }9 X
}/ B2 h* P* U& x/ U
return res;
0 X. t( K+ I$ ^% K% E2 o }
+ N% K5 c1 L1 K0 j* w- X. K}
" @ {. M' x% N+ c7 S) c, V/ i; B% n
2 [: h2 K) I% @! q- d7 N【 NO.2 网格游戏】
; U& g5 z% I K P% i# Y
) Z. n" C t; u5 \$ s ^解题思路
! E$ J, j4 k( } r注意到网格只有两行,所以第一个机器人需要选择的实际上就是从哪一列向下。在它确定了向下的那一列之后,第二个机器人要么只能拿到第一行开始部分的分数,要么只能拿到第一行结尾部分的分数。 C6 b: |$ `: [
, Z; u0 L0 r9 F8 z. e
代码展示
% Z O; c1 K5 I. c, U' [* i4 f! g- z( M
public class Solution {: S T: ^' g3 }8 P; i
public long gridGame(int[][] grid) {
1 I/ j) Q" Q- D if (grid == null || grid.length == 0 || grid[0].length == 0) {
0 {3 L! j+ O& K" }4 B; K# G k return 0;4 L& t8 I2 {" r# A( h
}
f4 e7 Q* q r int n = grid[0].length;
& Q' \, t; r6 m3 @* Q$ M6 u long left = 0, rihgt = 0;- ^) e$ d: B. x! z2 [7 ]
for (int i = 1; i < n; i++) {
( l+ [# c. y. d( T9 ]; s rihgt += grid[0][i]; O1 c+ x+ J5 C) a( n r) h
}
, I/ D6 f6 H, [: e long res = rihgt;5 T- Y6 e; v5 a1 s. k
for (int i = 1; i < n; i++) {
, ]" _; P" ~8 |) r left += grid[1][i - 1];
6 M9 U# @+ X% D rihgt -= grid[0][i];
; _- e% K1 B# a1 a res = Math.min(res, Math.max(left, rihgt));9 |. _* w% {& H1 d
}
4 G) R- g2 ^# F+ H, ~ return res; ]; ~" Y5 @3 c' i" B |0 W
}
5 X2 ^4 L! J% H4 i7 ]+ c5 N7 m}+ y# A5 ~8 ?+ V6 n! R
1 q6 S& Y3 `) y- a1 t2 J
s' u( J8 ~4 E) Q
【 NO.3 判断单词是否能放入填字游戏内】
! u4 P( V/ V$ H; ]5 k& i9 Q% h* y
* C# ~6 D# {- i# a( E( B解题思路
; A/ U( |! i; P+ j模拟题,详情见注释。
6 _( I8 c" q) v: s+ _1 ]1 ^* R3 L" J
代码展示9 x2 t- `) ^4 D) w" E
9 Y, w$ |7 K: J0 X4 {! x
public class Solution {( [% M0 I; [0 |5 Z/ K9 D! `
! b9 J2 K+ L/ h9 c$ |" t; f
public boolean placeWordInCrossword(char[][] board, String word) {# J c' V4 y! N8 B3 \
! g/ p8 O) X$ G
if (board == null || board.length == 0 || board[0].length == 0) {6 T/ D' g7 `8 E- r; Q+ ]
; c8 Z1 F6 [! K. `6 I# B
return false;: ?& d5 G5 K9 }
5 X# O+ l/ M4 \ }
}
6 M+ I& U/ l9 A- j
8 u; r( o/ @4 T: g8 r int n = board.length;
$ |- o5 w) o# z2 ?# q! G
0 n# j, L! _* d x& V( ~: `, z int m = board[0].length;: H& Z# H0 o5 _3 W1 U* c
9 T4 D( [: z9 r7 z6 A+ K7 _; I for (int i = 0; i < n; i++) {: `6 h3 A) e! i, V; {4 x" h
2 z- U: c8 H8 L for (int j = 0; j < m; j++) {
$ R' ^1 C* M, C2 K Z
4 @, J* d y+ j4 { // 从 (i, j) 开始,尝试水平地、垂直地放置单词4 c& F, a/ A# s3 @ ]
6 A) `3 n1 m7 W
if (isValid(board, word, j, j + word.length() - 1, i, true) || isValid(board, word, i, i + word.length() - 1, j, false)) {$ v7 h3 m0 \) b0 G. F2 e
. R* G0 M4 H- ?$ N4 h& v" b return true;
# ?6 L+ t$ P! v6 c- U1 P- ]: o0 [+ g+ F' q* O2 h$ K8 Y- _
}( [ r8 n( t& q: u1 C+ Y
- q" w) _3 z) K: |4 R5 ]7 P8 Q
}
) ]: a- v- S; C6 F
1 Y) y& h9 u' h- p6 X& L5 a }
. ~* L9 p4 f/ O) C4 F$ l! m# U7 n5 `
8 @: U8 q% R9 F8 @; C/ k5 ~ return false;% ~! S/ s- Z9 T' O4 k% r7 ]' j, x
3 c1 y* t t! e$ o }7 I) M3 S7 U) K4 v
6 R' S) T) ~) ]2 t% [9 K; @
private boolean isValid(char[][] board, String word, int start, int end, int standard, boolean isHorizontal) {
; Y2 i" L- T, Q# r7 J6 i' J5 d+ |4 N+ h1 n' v
// 水平放置, standard代表行, 固定不动
" S/ X- Y$ I y$ R- L0 w' f
% A$ Z- C; b$ ^: v! @ if (isHorizontal) {
8 v, E4 x' s8 j+ R! b/ T# x" f3 L3 u _4 ]7 i/ g& j
if (end > board[0].length - 1) {" c0 |3 K1 n7 j) [) G3 O2 b
7 O: V: I; L) i% v
return false;$ V9 x4 w e H! [; a$ Y4 A" u
! d# u# C; t2 w' z! E/ L3 S/ G
}
4 s8 Q- b) t0 A3 V# d: X# P5 f* ^
) @6 ~1 X( M" g3 n1 r1 m( D$ I8 b+ P // 如果左边界不越界,检查左边界的元素是否合法
; y8 X( {5 m7 S- a3 v0 ^1 x2 I7 n) S/ D
if (start - 1 >= 0 && (board[standard][start - 1] == ' ' || Character.isLetter(board[standard][start - 1]))) {
, f, m; u4 p8 F" P2 Y F1 U
& J, v9 F8 |; C$ P return false;1 g5 G z2 M) [; i9 {( ^- y; j1 t
- o3 B! F+ H7 R3 @: ?9 ], g
}! }7 ]7 t- v; @! W. }+ Y
4 X$ a# W/ K; p7 C( C' ^ // 如果右边界不越界,检查右边界的元素是否合法
* [3 F# B! {$ U. H- v2 \2 _8 l% O" n- T' q5 a
if (end + 1 < board[0].length && (board[standard][end + 1] == ' ' || Character.isLetter(board[standard][end + 1]))) {
$ l( g, S2 G; D% k4 N* T* A5 n; K$ e
return false;
6 v$ P$ B" ]' g& v. O. d4 \4 s& L# B) \# g4 M
}8 V# _) A4 ?$ Y8 S6 @5 q
. A( U2 l f: i1 j" `' Z // 至此,它的位置已确认是合法的了
( S4 s; j8 n3 P) [2 Z+ l0 m
2 X3 Q4 H$ j* H% J$ b // 接下来,只需要判断 (standard, start) ~ (standard, end) 这个区间 "是否有障碍'#'0 ]/ q" E- C- D3 }+ N
! K$ @8 A5 c. d4 a% \ // 正反都需要判断
# Y D% e" D3 g+ H3 Y1 M2 ^9 W( @& C
return check(board, word, start, end, standard, true, false) || check(board, word, start, end, standard, true, true);9 e8 E2 Y" J$ D8 L, `( D
7 a5 n& y/ D( I4 @: `; p
}- [ M: m+ E( h& k
i$ {0 b) ]+ s; g1 o1 J4 l1 D, E // 垂直放置,standard 代表列, 固定
: a) P4 q( |8 X$ A( `! o- Q9 ]3 U9 s) x/ i
else {4 E2 r* Y9 H8 L( A
6 h& n1 i8 U! M. n% E9 L4 g9 }
if (end > board.length - 1) {, D4 z0 r. Y2 ?1 s2 y( D
7 S' G7 O5 t6 c. D" b& l: G return false;
0 c& f+ J$ e0 ]2 g
# A2 N: r& u+ [- i+ I }
3 Y9 u/ Z5 r# d# B. |* D, m8 `. x' Q# A0 C+ }$ Q0 X7 g
// 如果上边界不越界,检查上边界的元素是否合法
; p8 e. e q4 j5 M k# S
. | A& T+ A8 F7 x( F if (start - 1 >= 0 && (board[start - 1][standard] == ' ' || Character.isLetter(board[start - 1][standard]))) { z1 y& u9 O9 V
/ I1 H0 W+ k5 x) e
return false;
0 @% \4 w8 s7 v* i6 L4 g. \4 k/ U- f. G" V
}+ a; c8 y3 d5 }! M
9 w8 J$ j! l) _) f& H
// 如果下边界不越界,检查下边界的元素是否合法/ j/ s0 ~; i& {# @4 _
( T9 T% e5 {7 C' b if (end + 1 < board.length && (board[end + 1][standard] == ' ' || Character.isLetter(board[end + 1][standard]))) {
8 @4 f8 P8 x& @# Y2 `% q' l( n$ f$ q4 D" l9 m" u
return false;9 Z4 Y/ s" X; X. K U
! I: A9 r, i0 h7 J8 {2 }8 V4 b7 C
}
4 U9 K2 X% G* N* q
" @( j3 G8 l- _6 P- }) ~. n2 ?3 ~ // 至此,它的位置已确认是合法的了
8 Q/ ~; M% g: P# [0 H8 B6 ]% i4 I, D* y: E: G- G3 F2 G4 _0 D9 p% L
// 接下来,只需要判断 (start, standard) ~ (end, standard) 这个区间 "是否有障碍'#'
6 W( F' a4 s2 `) x7 \& j& E4 {: O7 w- O; _8 @5 C5 h
// 正反都要判断4 a0 T* p3 N: T/ ?' r5 u+ x
" _; X& x/ w) A @
return check(board, word, start, end, standard, false, false) || check(board, word, start, end, standard, false, true);
: b1 T5 o3 P/ R
( T, f2 z1 v0 `) N, h$ {- h6 L }5 u2 O7 ^5 A# J* |. N
, P( V8 [+ g% ]$ o$ B2 V# o+ H
}" B& K+ q6 C4 K7 o" |0 a
0 w a, |9 o! l. B0 C# j) Rprivate boolean check(char[][] board, String word, int start, int end, int standard, boolean isHorizontal, boolean isReversed) {# |; B; o x! v8 n5 S8 P: a
! g( s/ |. v! t: q. w$ a7 k
if (isHorizontal) {& h; S9 v3 f$ X: n
8 w$ o' F& Z# {6 P3 X- t
// 正向模拟+ i, f! I: C' u
7 g, `, Y/ I( B
if (!isReversed) {
' \' W1 o. W, Q' M8 l* ~' n
5 O* S2 i u; W+ z: ? i; n: e for (int i = start; i <= end; i++) {
" E/ w8 P/ ~4 m9 X: h4 v' g# B% g1 p
if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(i - start))) {
' I: j" l) x$ C
. [% `( R" S, B% ?- ^ return false;' B, K) \/ I- {2 f9 W1 \
9 S) t+ G& S" c. C' L }
3 ^9 L; J8 [; u7 u6 P! P" `: k. U- g$ d6 |- B/ w) d8 q* g
}
! K; M# w5 |3 O& @- d5 U1 G' ~; `3 B: _$ J2 B8 x8 ?
}, v( ^2 u& t, E0 s9 m' N& \7 U
+ N( J3 S! ~, }1 b3 k% ^; v
// 反向模拟& B7 {1 h; G, ]: U3 s g% p
/ W3 w% o) V, y. x# k0 `- y, h4 v
else {
7 E. |, p! n5 b4 W
) ?' }* d+ G: e' j! V: ]7 S for (int i = end; i >= start; i--) {& f2 m; T5 W* H6 s- m' F
1 J/ u, M. b Y. `4 X+ V4 M( m if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(end - i))) {. m/ ]/ i0 Y. F: q9 Q L
4 G+ V2 i2 V! L2 o/ E3 O; P
return false;- F1 k( l3 B2 t) \# ?
$ h( E1 s* J# z2 ?( D0 N, t }0 j( b8 c! r* T/ }
6 @8 |6 v# ^* z
}
, N* q( N2 _ }0 L( D* P* Y" u& {; X$ R7 O& g% ], X
}
: n2 Y S- K/ ~6 |- a* `$ I
# j! p, s0 a- \3 P: t1 q }
; } g! R0 t7 W- A. l
2 t( Z0 T2 n* C$ F# J; k else {
6 Z4 c% q$ W; ^0 b( a
6 G( e) a. O* l; S# S% P7 o1 o // 正向模拟" d- S3 H$ v* D: z
, o3 v+ Y* n& O
if (!isReversed) {
8 }5 z% D0 |8 {3 v2 P3 {" _' f7 Z4 K0 q" q p) v- m6 _
for (int i = start; i <= end; i++) {
) _ C6 C& {5 e. I, |6 d6 L; _9 z7 O9 ^) S/ W& d, z
if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(i - start))) {3 n) z2 |% c8 t) }) I1 v7 E
: o3 a4 e+ p/ E" l) u- B return false;* ~: f& U; G% n6 }2 N
# o6 F9 p; U; Q6 e }! a! y. a- Q& l6 i3 L& S
# A7 S& I1 f/ N }5 f* F8 Q- i# k
+ U$ e, J- o# q5 j/ x2 o
}
6 w# x9 A, [" K2 x6 [8 W S! l+ w/ {# C' s2 Y3 x- y
// 反向模拟 H, Z8 | G! S) [) G4 m' I$ U
! C" T; U& H+ P7 [! J
else {
3 Y w0 S# S1 D) d8 B
3 i3 \ D; M" T0 `! n for (int i = end; i >= start; i--) {
( ?) @$ ?0 Y) @7 o# B* W
+ V0 e6 M" [' g1 q if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(end - i))) {
. S( |, I* I. l' \$ \& L0 e5 g4 V- |' I0 |5 v; L9 t' }- }
return false;8 a# T9 O0 T% e2 z7 j9 z4 `
h# a" z& s" A% u
}
: u) l5 X9 v2 ~+ W' S3 A9 W5 }
4 a# i5 y9 `+ u6 x- a7 l }
! I5 M7 E3 l5 Q6 C; ~" r X& }) g' \
}
: u1 h. T. \# Q+ I* B; U: m5 C6 F( y/ j* ?, R: o' J6 A
}8 N. B8 H; \- l. Z) P) ~
# D1 g" G1 p5 F9 b: G: V; d
return true;
) S$ t0 g6 x0 ~ Y6 ~7 y# P9 H' _+ u0 ?0 z j6 [2 ]
}4 _! M% e" k1 j
$ r$ d4 G1 x: W5 g}) y* x# X# o! {0 Q- s, a, ?
2 v4 p F3 b; x: j
% \6 I2 q+ `: x# T
【 NO.4 解出数学表达式的学生分数】
% M% T, x- y2 X$ E" U+ s6 d9 G7 M w% r, K& t% P
解题思路
) x& v; W* L) l- i) [3 B) ~6 X$ A) V
首先理一理总体的思路,我们需要做的事情有:
% G; f: D5 Z2 K0 N! g5 K* I/ _ Q- o
# y4 O5 h: s7 W' m/ o0 P& f1. 求出表达式的正确值:Stack的方式解决% U+ K4 n* u6 J! b: K$ z) Z
2. 求出表达式所有可能的值:区间型动态规划解决
) }2 U& B1 n1 ~3. 计算学生的得分:计分即可
, i, I4 \! T, F; r# d代码展示# R; {" Q$ ?+ V" X p& g; E* ~. J# U( T
. A. U2 P" P9 n2 upublic int scoreOfStudents(String s, int[] answers) {* E5 w# b; k8 X9 Y6 A5 e/ Q, z
/ o0 c4 Q" B4 k0 t) H2 y. n
int[] count = new int[1024];3 O* v1 P$ C' n& w( Z/ A
9 p& G _: E N for (int ans : answers) {- C" x4 G+ v& p' N
! R! \, P3 b) j count[ans]++;
& o) k! V( ]+ x% A# V$ E$ N& Q, @
}# \& H0 y8 D0 {0 X/ r8 s
9 Z+ v( F2 N! H$ o0 L& Z9 h5 c
Stack<Integer> stack = new Stack<>();% ~2 [# k% o1 H8 B
8 U7 C& y a" G! @ stack.push(s.charAt(0) - '0');
+ P$ j8 y! U; x. q; R0 k: K$ [ ~5 `9 p q& u
for (int i = 1; i < s.length(); i += 2) {$ \6 I) Y4 t, x2 p# j h
+ V' _5 ]( \! d1 N; w3 T q // 加法暂时不做,存在栈顶- I/ v/ [7 [) C/ X$ M
! w1 M" `5 w3 j7 {0 T( y if (s.charAt(i) == '+') {
: ?# s6 A5 z( N: B E* C6 e, L1 Y7 {
stack.push(s.charAt(i + 1) - '0');
\- E+ E- u) P& V! j1 C/ ] Y. b9 O6 S c N z2 a
}
]3 ~) i3 U8 a: E9 ]: M8 B# _# y2 Q
4 }' a$ V) y! i3 s# S) D // 乘法直接运算
7 P1 x* Y0 P5 n% D( t- F ~' X5 C- G; F# q
else {2 j) X$ ~ W* l2 `
* K5 B4 S( V |7 s/ o' K9 N' p! f stack.push(stack.pop() * (s.charAt(i + 1) - '0'));
7 H. d9 i+ Y; r; u7 e7 n7 |6 u0 |$ a3 W' j) N
}) _* I }" Q/ y; A- z* i+ e
5 r B6 Y. J" t2 F
}
0 D" x) t* \3 Q; y+ }
5 ^( O/ O4 y5 O# ~; u$ p int rihgtAns = 0;* W5 N5 V6 a1 F3 J- w' i
8 w+ B) B8 v" {) o. t1 D N+ A
while (stack.size() > 0) {
. J) V0 i+ b. K0 g' v4 e/ M' e6 o
) i% `) y8 c- n rihgtAns += stack.pop();4 P5 e% \& U' ]7 g& V
; ?5 o( y9 [( C1 N/ m1 u
}
4 c% @3 q; w9 b# T2 U# F: @* o7 F4 g7 S* J }) A7 c4 C0 Y
// 计算正确的人数积分
) K8 i; z7 |* E0 z; d% P$ t4 p* v8 L2 @, W! C
int res = count[rihgtAns] * 5;
1 C% N1 N5 L% w+ I" ~* z' o2 S4 _" o! M1 H N' b3 Q3 r
4 V" J, I5 W1 d( w5 O1 {
% `' N. p' F1 m! J // 枚举所有可能的计算结果
3 |5 \2 l( r2 U; \; s8 C, O9 u* |4 |. N2 L4 ^" q" X! k/ Y1 G" c
int n = s.length(); C& b* x2 H9 [0 l
) J: v3 O( m, o Y/ f
Set<Integer>[][] dp = new Set[n + 2][n + 2];! H! W8 o. Z! O
4 t; [' @9 p' r# K) ?5 F for (int i = 0; i < n + 2; i++) {
1 x) J$ P) b" }/ q' @( E
A; K( ]& P5 e# { for (int j = 0; j < n + 2; j++) {/ g) }2 ^4 o5 w
) L6 ]1 f$ H& b0 T8 u
dp[i][j] = new HashSet<>();
! X/ b" D* W! U# k& C' {) o" k2 m6 f( x8 ~
}& S$ E1 M4 l+ f$ J, b
- _1 f6 N8 b0 S& y
}
& G- l% j5 h, e. T2 ~1 J' N: G' _! e& e6 a6 A2 ]) \/ R
for (int j = 0; j < n; j += 2) {9 Z1 n. S( ]1 {3 X* |
8 @0 t# y% b0 m2 z) r8 [/ j dp[j][j].add(s.charAt(j) - '0');6 m- H4 u& @3 \+ y
( d! K2 s$ y# q. b- W4 z
}4 a! y p6 @* U* T! K* f
) k. _) y8 u6 k2 |( v$ |1 @3 x& W) p& P // 区间型动态规划' X- {- q: Z8 o' H3 {/ v9 n
) g N9 y8 |& l) \5 _ for (int len = 2; len < n; len++) {" g* O, Z, e. P$ o. [
& u& c3 u; v* o) u
// 左端点 i
. Z9 V' c2 J6 u# K& o) ~7 I' W2 w5 X7 M% `: ~9 I' n
for (int i = 0; i + len < n; i += 2) {3 d i& u/ y3 ~" B
G5 }/ |8 l, j- g, X" I$ U3 Y7 n // 枚举左半部分的长度
: U" {6 F- _9 ^
* a5 e( c8 W% B/ } for (int leftLen = 0; leftLen < len; leftLen += 2) {
' Q, z! p. S) x% f: K5 N* W4 \ I1 y) x u* L3 ]. x5 B8 L2 O
// left 表示左半部分的值5 _4 m( i+ |( u( u3 d& N
$ Q% A( [0 R- G# H* W* Z // right 表示右半部分的值
& x& {0 R h( N3 ?9 T+ W2 z7 h' p' F; K
for (int left : dp[i][i + leftLen]) {* P& ]8 r: k, H9 G, a _+ |9 X3 @
* ?7 K. F- w! t; m" O k, m$ \
for (int right : dp[i + leftLen + 2][i + len]) {
& K! j! V* v' w3 i' m+ p
8 q( E; L, u" f) v- ] if (s.charAt(i + leftLen + 1) == '+') {4 R& J; o l( Z$ ? C, c
& v" W- s5 U$ o. e$ w. r if (left + right <= 1000) {8 _7 h! K7 z' d: e f
3 L. V, ~% t; d4 `9 r$ U% e dp[i][i + len].add(left + right);
$ L& `8 k0 v( s7 r' H+ j- d( P: L; B! ` F8 ^( ~2 x9 q
}
* W8 b) g* S; }! `1 E4 i
, \/ m6 m1 k1 x9 J T } else {
8 J# R( v6 C3 T, O+ R0 w4 D; R/ l, I9 t0 Z$ w) u3 g# ` F7 c
if (left * right <= 1000) {) N# B3 J7 y- @1 V% A% d$ U
9 M& E. T5 p* \, d$ F& S dp[i][i + len].add(left * right);
' y* A3 J$ [' k2 k' ?2 t4 t8 A0 m
* Z/ P* h( d1 i/ C: T }% M& ~6 v4 z @) _
; Y! U9 g! U' M4 L' k; N' b" y
}
: O) h$ Y$ G* Q5 \
2 B- M# A m8 ?' ]/ a }
* g8 w7 c+ ]9 O9 n! j: [
1 A3 y& E! V! ~ }) A9 y: B' {, {: m- u. E. x' {4 @
0 h; V v; d0 V; D% {) y2 E
}) l; b$ n8 H9 K; C* V( T
7 f# N$ f- M! C" B& x! n/ X
}
1 b, u& e" ^4 g2 }% U4 A" m7 B' o. `% [8 K0 V u. e1 e
}; x1 v$ @/ A: Y, }" V9 p8 r
, t! D. s0 q, A
# l! `. ^/ j( e$ I% ]9 x0 N' z# r6 @0 |9 u
for (int points : dp[0][n - 1]) {% G$ Q; \2 O, s* D/ b4 A
) J. E5 L5 Z5 a- A$ y# X if (points != rihgtAns) {) e% w1 g! p4 K* h3 \3 C
' Z) t: j y8 ?" D0 @4 V1 d: b res += 2 * count[points];
$ w p- s# K; P- h8 T
. O0 q. Y1 n$ {( t& a- W* e }/ x. K9 D: f6 i) Y6 _
6 X$ ^; J* f8 f! l- ?
}
& U, S l5 C, L# i) e
, `1 G0 f. Q% h, Z' U) ?, _# i return res;
0 _2 ^1 U9 f8 D1 ?4 G( f, X6 j& J; C" q
} |