阿里笔试贴代码大家来找茬

第一题: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;
	}
第二题就算了,感觉题都没看明白,直接弃疗

#阿里巴巴##笔试题目#
全部评论
首先声明自己是个菜狗子,所以认知比较有限,感觉自己的逻辑把条件考虑了都。。。
点赞 回复
分享
发布于 2019-08-30 20:52
🤣第二题就是字符串+环的处理啊,比第一题简单的 第一题貌似DP都是40%
点赞 回复
分享
发布于 2019-08-30 20:53
联易融
校招火热招聘中
官网直投
求题目
点赞 回复
分享
发布于 2019-08-30 20:53
感觉有个坑就是 3+2是五个 但是4+3就是六个 
点赞 回复
分享
发布于 2019-08-30 20:57
第二题来不及了 佛了
点赞 回复
分享
发布于 2019-08-30 21:02
求第二题题目
点赞 回复
分享
发布于 2019-08-30 21:11
private static HashSet<Integer> list = new HashSet<Integer>();     private static int getMinimumTimeCost(int n, int[][] area) {         int cols = area[0].length;         int price = 0;         int min = Integer.MAX_VALUE;         for(int col=0; col<cols; col++) {             if(col==5) System.out.println("hehe");             dfs(area, 0, col, price);         }         for(Integer data:list) {             if(data<min) {                 min = data;             }         }         return min;     }          private static void dfs( int[][] area, int row, int col, int price) {         if(col>=area[0].length) return;         if(row>=area.length) {list.add(price); return;}         int choose1=0, choose2=0;         choose1 = area[row+1][col];//向下的代价         if(col+1>=area[0].length) {             choose2 = 100000;//向右的代价         } else {             choose2 = area[row][col+1];//向右的代价         }         int price1    = price + choose1;         int price2 = price + choose2;         dfs(area, row+2, col, price1);         dfs(area, row, col+2, price2);     } } 没来的及提交,测试感觉结果还可以
点赞 回复
分享
发布于 2019-08-30 21:46
第一题我只考虑了往下走的情况,不考虑左右就有40%
点赞 回复
分享
发布于 2019-08-30 22:35

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务