#define min(a,b) ((a)<(b))?(a):(b); int minPathSum(int** grid, int gridSize, int* gridColSize){ for (int i=gridSize-1; i>=0; i--){ for (int j=(*gridColSize)-1; j>=0; j--){ if( i+1>=gridSize && j+1>=*gridColSize ) continue; grid[i][j] += min( (i+1<gridSize)?grid[i+1][j] :2147483647, (j+1<*gridColSize)?grid[i][j+1] :2147483647); } } return **grid; }