int minCostPath(int arr[3][3],int n,int i,int j){ if(i<0 || j<0) return INT_MAX; if(dp[i][j]!=-1) return dp[i][j]; if(i==0 && j==0) return dp[i][j]=arr[i][j]; count++; return dp[i][j]=arr[i][j]+min(minCostPath(arr,n,i-1,j),minCostPath(arr,n,i,j-1),minCostPath(arr,n,i-1,j-1)); }
int minCostPath(int i,int j,int a[R][C]){ if(i<0 || j<0) return INT_MAX; else if(i==0 && j==0){ return a[i][j]; } else return a[i][j]+min(minCostPath(i-1,j-1,a),minCostPath(i-1,j,a),minCostPath(i,j-1,a)); }
int main(){ int arr[i][j] = {{1,2,3},{4,8,2},{1,5,3}}; printf("minCostPath:%d",minCostPath(i,j,arr)); return 0; }
int main(){ int arr[R][C] = {{1,2,3},{4,8,2},{1,5,3}}; const int i=3,j=3; printf("minCostPath:%d",minCostPath(i-1,j-1,arr)); return 0; }
int main(int argc, char const *argv[]) { //r=c=3; init(3); int cost[3][3] = { {1, 2, 3}, {4, 8, 2}, {1, 5, 3} }; printf("%d\n",minCostPath(cost,2,2,2)); printf("%d\n",count); for(int i=0;i<3;i++){ for(int j=0;j<3;j++) printf("%d ",dp[i][j]); printf("\n"); } return 0; }