To represent this problem better,
- Let
A be the profit matrix where A[c] is the profit array for city c (c = 0 for the first city, c = 1 for the second, and so on).
- Let
P(i, c) be the optimal profit up to and including day i such that the moving company end up in city c on day i.
- Let
C(c', c) is the cost of moving from a city c' to a city c.
This setup allows us to generalize the solution to an arbitrary number of cities.
In order to maximize P(i, c), we have to consider all possible cities that the movers could be in on the previous day i-1 and choose the maximal option. These possibilities include the movers being in the same city on the previous day, and moving from another city the previous day while incurring a moving cost. Hence
P(i, c) = max(P(i-1, c), max(P(i-1, c') + C(c', c) for all cities c' != c)) + A[c][i]
The first argument in the outer max (P(i-1, c)) considers the case where the movers were in the same city on the previous day, and the second argument (the inner max) evaluates and maximizes the profits (including moving costs) if the movers were in a different city on the previous day.
The final answer is simply max(P(n, x) for all cities x) where n is the last day (considering all possible cities the movers could end up in on the final day).
In your example, city A == city 0, city B == city 1, profit matrix A = [[10, 20, 30], [-10, 50, 20]], and C(0, 1) = C(1, 0) = 20.
EDIT:
The time complexity will be O(nc), where n is the number of days and c is the number of cities. If the number of cities is fixed, then the time complexity is O(n).
Proving correctness can be done using induction. Assume that P(i-1, x) is maximal for all cities x. Then show that P(i, c) for some city c as defined above is maximal. There are two possibilities for the maximal solution:
- The movers were in the same city
c on day i-1
- The movers were in a different city
c' on day i-1.
Now all you have to show is that the recurrence defined above will give you the correct solution in both these cases.