阿里笔试贴代码大家来找茬
第一题:40%
dp为什么没过我也是不能理解,求大神指导 路人可以围观评论🤣
private static int getMinimumTimeCost(int n, int[][] area) {
if(n == 1) {
return 0;
}
int res = Integer.MAX_VALUE;
if(n == 2) {
for(int i=0;i<n;i++) {
if(area[1][i] < res) {
res = area[1][i];
}
}
return res;
}
int[][] dp = new int[n][n];
for(int i=2;i<n;i++) {
for(int j=0;j<n;j++) {
if(i == n - 1 && i % 2 == 1) { // 奇数终点
dp[i][j] = dp[i-1][j] + area[i][j];
}
if(i == n -1 && i % 2 == 0) { // 偶数终点
dp[i][j] = dp[i-2][j] + area[i-1][j];
}
if(i % 2 == 1) {
continue;
}
if(j == 0 || j == 1) {
dp[i][j] = dp[i-2][j] + area[i-1][j];
}else {
dp[i][j] = Math.min(dp[i-2][j] + area[i-1][j], dp[i][j-2] + area[i][j-1]);
}
}
}
for(int i=0;i<n;i++) {
if(dp[n-1][i] < res) {
res = dp[n-1][i];
}
}
return res;
} 第二题就算了,感觉题都没看明白,直接弃疗
查看12道真题和解析