样例中,最小值为109=1+2+5+7+9+12+19+21+33。
算法思想:
如果没有步数限制在2N-1,而是超过2N-1 则本题就是迷宫求解最低费用问题。
import java.lang.*;
import java.util.*;
class Main{
static int n = 0, N = 110;
static int[][] nums = new int[N][N];
static int[][] min = new int[N][N];
static int getMin(){
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
if(i - 1 == 0 && j - 1 == 0)min[i][j] = nums[i][j];
else if(i - 1 == 0){
min[i][j] = min[i][j - 1] + nums[i][j];
}else if(j - 1 == 0){
min[i][j] = min[i - 1][j] + nums[i][j];
}else{
min[i][j] = Math.min(min[i - 1][j], min[i][j - 1]) + nums[i][j];
}
}
}
return min[n][n];
}
public static void main(String[] args)throws Exception{
Scanner s = new Scanner(System.in);
n = s.nextInt();
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
nums[i][j] = s.nextInt();
}
}
int res = getMin();
System.out.print(res);
}
}