int min(int a,int b) { return a<b?a:b; } int minPathSum(int** matrix, int matrixRowLen, int* matrixColLen ) { // write code here int i,j; int cost[matrixRowLen][matrixColLen]; memset(cost,0,matrixRowLen(*matrixColLen)*sizeof(int)); int m=matrixRowLen;int n=*matrixColLen; cost[0][0]=matrix[0][0]; for(i=1;i<m;i++) { cost[i][0]=matrix[i][0]+cost[i-1][0]; } for(j=0;j<n;j++) { cost[0][j]=matrix[0][j]+cost[0][j-1]; }
for(i=1;i<m;i++) { for(j=1;j<n;j++) { cost[i][j]=min(cost[i-1][j]+matrix[i][j],cost[i][j-1]+matrix[i][j]); } } return cost[i-1][j-1];
}