Java教程

【Java】【刷题】【网友小需求】棋盘上有n个点,实现判定是否存在所有的点都落两条直线 x=a,y=b上,并返回a,b的值。

本文主要是介绍【Java】【刷题】【网友小需求】棋盘上有n个点,实现判定是否存在所有的点都落两条直线 x=a,y=b上,并返回a,b的值。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

【题目】:棋盘上有n个点,实现判定是否存在所有的点都落两条直线 x=a,y=b上,并返回a,b的值.

		int[][] arrays = new int[8][8];
		arrays[1][5] = 1;
		arrays[1][6] = 1;
		arrays[2][6] = 1;
		arrays[2][6] = 1;
		arrays[1][2] = 1;
		arrays[0][6] = 1;
		Map<Integer, Integer> mapX = new HashMap<>();
		Map<Integer, Integer> mapY = new HashMap<>();
		for (int x = 0; x < arrays.length; x++) {
			for (int y = 0; y < arrays.length; y++) {
				if (arrays[x][y] == 0)
					continue;
				if (null == mapX.get(x)) {
					mapX.put(x, 1);
				} else {
					mapX.put(x, mapX.get(x) + 1);
				}
				if (null == mapY.get(y)) {
					mapY.put(y, 1);
				} else {
					mapY.put(y, mapY.get(y) + 1);
				}
			}
		}
		boolean flag = true;
		int maxValueX = getMaxKey(mapX);
		int maxValueY = getMaxKey(mapY);
		for (int x = 0; x < arrays.length; x++) {
			for (int y = 0; y < arrays.length; y++) {
				if (arrays[x][y] == 0)
					continue;
				if (x != maxValueX && y != maxValueY) {
					flag = false;
					break;
				}
			}
		}
		if (flag) {
			System.out.println("存在");
			System.out.println("x=" + maxValueX);
			System.out.println("y=" + maxValueY);
		} else {
			System.out.println("不存在");
		}

	}

	public static int getMaxKey(Map<Integer, Integer> map) {
		if (map == null)
			return 0;
		int maxValue = -1;
		int maxKey = -1;
		Iterator<Entry<Integer, Integer>> iterator = map.entrySet().iterator();
		while (iterator.hasNext()) {
			Entry<Integer, Integer> next = iterator.next();
			if (next.getValue() > maxValue) {
				maxKey = next.getKey();
				maxValue = next.getValue();
			}
		}
		return maxKey;
	}
这篇关于【Java】【刷题】【网友小需求】棋盘上有n个点,实现判定是否存在所有的点都落两条直线 x=a,y=b上,并返回a,b的值。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!