מאי.28

סכום נתיב נופל מינימלי

סכום נתיב נופל מינימלי

נותנים מטריצה של מספרים. יש למצוא נתיב הכי זול למטה. אי אפשר לחזור אחורה, אפשר ללכת רק ישל למטה, למטה שמואלה או למטה ימינה.

Input: [[1,2,3],[4,5,6],[8,7,9]]
Output: 12, because shortest is 1->4->7

This is dynamic programming problem.

  1. public int MinFallingPathSum(int[][] A) {
  2. int result = int.MaxValue;
  3. int rows = A.Length;
  4. int columns = A[0].Length;
  5. if(rows == 0 || columns == 0)
  6. return 0;
  7. for (int row = 1; row<rows; row++) {
  8. for(int column = 0; column<columns; column++) {
  9. if(row == 0) continue;
  10. if (column == 0)
  11. A[row][column] += Math.Min(A[row-1][column], A[row-1][column+1] );
  12. else if (column == columns-1)
  13. A[row][column] += Math.Min(A[row-1][column-1], A[row-1][column]);
  14. else
  15. A[row][column] += Math.Min(A[row-1][column], Math.Min(A[row-1][column-1], A[row-1][column+1]));
  16. }
  17. }
  18. for (int column = 0; column < columns; column++) {
  19. result = Math.Min(result, A[rows - 1][column]);
  20. }
  21.  
  22. return result;
  23. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה