- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find maximum number of coins we can collect in Python
Suppose we have a 2D matrix where each cell stores some coins. If we start from [0,0], and can only move right or down, we have to find the maximum number of coins we can collect by the bottom right corner.
So, if the input is like
1 | 4 | 2 | 2 |
0 | 0 | 0 | 5 |
then the output will be 14, as we take the path: [1, 4, 2, 2, 5]
To solve this, we will follow these steps−
for r in range 1 to row count of A, do
A[r, 0] := A[r, 0] + A[r-1, 0]
for c in range 1 to column count of A, do
A[0, c] := A[0, c] + A[0, c-1]
for r in range 1 to size of A, do
for c in range 1 to size of A[0], do
A[r, c] = A[r, c] + maximum of (A[r-1, c] and A[r, c-1]
return value of bottom right corner of A
Let us see the following implementation to get better understanding−
Example
class Solution: def solve(self, A): for r in range(1, len(A)): A[r][0] += A[r-1][0] for c in range(1, len(A[0])): A[0][c] += A[0][c-1] for r in range(1, len(A)): for c in range(1, len(A[0])): A[r][c] += max(A[r-1][c], A[r][c-1]) return A[-1][-1] ob = Solution() matrix = [ [1, 4, 2, 2], [6, 0, 0, 5] ] print(ob.solve(matrix))
Input
matrix = [ [1, 4, 2, 2], [6, 0, 0, 5] ]
Output
14
Advertisements