阿里0314笔试题
第一道
static Map<Character, Integer> map = new HashMap<>(); static { map.put('0', 0); map.put('1', 1); map.put('2', 1); map.put('3', 2); map.put('4', 1); map.put('5', 2); map.put('6', 2); map.put('7', 3); map.put('8', 1); map.put('9', 2); map.put('a', 2); map.put('b', 3); map.put('c', 2); map.put('d', 3); map.put('e', 3); map.put('f', 4); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); s = s.replace("0x", ""); int ans = 0; for (int i = 0; i < s.toCharArray().length; i++) { ans += map.get(s.charAt(i)); } }
第二道,暴力破解了
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(), m = scanner.nextInt(); int[][] nums = new int[n][m]; int[][] up = new int[n][m]; int[][] down = new int[n][m]; int[][] left = new int[n][m]; int[][] right = new int[n][m]; int ans = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { nums[i][j] = scanner.nextInt(); } } for (int i = 1; i < n; i++) { for (int j = 0; j < m; j++) { up[i][j] = up[i - 1][j] + nums[i - 1][j]; } } for (int i = n - 2; i >= 0; i--) { for (int j = 0; j < m; j++) { down[i][j] = down[i + 1][j] + nums[i + 1][j]; } } for (int j = 1; j < m; j++) { for (int i = 0; i < n; i++) { left[i][j] = nums[i][j - 1] + left[i][j - 1]; } } for (int j = m - 2; j >= 0; j--) { for (int i = 0; i < n; i++) { right[i][j] = nums[i][j + 1] + right[i][j + 1]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (nums[i][j] == 0) { if (left[i][j] >= 1) { ans++; } if (right[i][j] >= 1) { ans++; } if (up[i][j] >= 1) { ans++; } if (down[i][j] >= 1) { ans++; } } } } System.out.println(ans); }第三道,最后十多分钟,看不懂题目,没做。