/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param triangle int整型二维数组
* @param triangleRowLen int triangle数组行数
* @param triangleColLen int* triangle数组列数
* @return int整型
*/
int min(const int a,const int b){
return a<b?a:b;
}
int minTrace(int** triangle, int triangleRowLen, int* triangleColLen ) {
// write code here
if(triangleRowLen==1)
return triangle[0][0] ;
triangle[1][0]=triangle[1][0]+triangle[0][0];
triangle[1][1]=triangle[0][0]+triangle[1][1];
for(int i=2;i<triangleRowLen;i++){
for(int j=0;j<=i;j++){
if(j==0){
triangle[i][j]=triangle[i-1][j]+triangle[i][j];
}else if(j==i){
triangle[i][j]=triangle[i-1][j-1]+triangle[i][j];
}else{
triangle[i][j]=min(triangle[i-1][j]+triangle[i][j],triangle[i-1][j-1]+triangle[i][j]);
}
}
}
int Min=triangle[triangleRowLen-1][0];
for(int i=0;i<triangleRowLen;i++){
if(triangle[triangleRowLen-1][i]<Min)
Min=triangle[triangleRowLen-1][i];
}
return Min;
}