<?php
$N
= 3;
function
FindMaximumSum(
$ind
,
$kon
,
$a
,
$b
,
$c
,
$n
,
$dp
)
{
global
$N
;
if
(
$ind
==
$n
)
return
0;
if
(
$dp
[
$ind
][
$kon
] != -1)
return
$dp
[
$ind
][
$kon
];
$ans
= -1e9 + 5;
if
(
$kon
== 0)
{
$ans
= max(
$ans
,
$b
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 1,
$a
,
$b
,
$c
,
$n
,
$dp
));
$ans
= max(
$ans
,
$c
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 2,
$a
,
$b
,
$c
,
$n
,
$dp
));
}
else
if
(
$kon
== 1)
{
$ans
= max(
$ans
,
$a
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 0,
$a
,
$b
,
$c
,
$n
,
$dp
));
$ans
= max(
$ans
,
$c
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 2,
$a
,
$b
,
$c
,
$n
,
$dp
));
}
else
if
(
$kon
== 2)
{
$ans
= max(
$ans
,
$a
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 1,
$a
,
$b
,
$c
,
$n
,
$dp
));
$ans
= max(
$ans
,
$b
[
$ind
] +
FindMaximumSum(
$ind
+ 1, 0,
$a
,
$b
,
$c
,
$n
,
$dp
));
}
return
$dp
[
$ind
][
$kon
] =
$ans
;
}
$a
=
array
( 6, 8, 2, 7, 4, 2, 7 );
$b
=
array
( 7, 8, 5, 8, 6, 3, 5 );
$c
=
array
( 8, 3, 2, 6, 8, 4, 1 );
$n
=
count
(
$a
);
$dp
=
array_fill
(0,
$n
,
array_fill
(0,
$N
, -1));
$x
= FindMaximumSum(0, 0,
$a
,
$b
,
$c
,
$n
,
$dp
);
$y
= FindMaximumSum(0, 1,
$a
,
$b
,
$c
,
$n
,
$dp
);
$z
= FindMaximumSum(0, 2,
$a
,
$b
,
$c
,
$n
,
$dp
);
print
(max(
$x
, max(
$y
,
$z
)));
?>