您的位置:首页技术文章
文章详情页

java算法题,set内出现重复元素

浏览:26日期:2024-01-05 14:54:14

问题描述

题目

将数字 1…9 填入一个3×3 的九宫格中,使得格子中每一横行和的值全部相等,每一竖列和的值全部相等。请你计算有多少种填数字的方案。

这个是计蒜客上面的一个模拟题,我采用暴力。

public class _3 { /* * 将数字 1…9 填入一个3×3 的九宫格中, * 使得格子中每一横行和的值全部相等, * 每一竖列和的值全部相等。 * 请你计算有多少种填数字的方案。 * */ public static void main(String[] args) {int count = 0;int[] a = new int[9];Set<Integer> set = new HashSet<>();for (a[0] = 1; a[0] < 10; a[0]++) { for (a[1] = 1; a[1] < 10; a[1]++) {for (a[2] = 1; a[2] < 10; a[2]++) { for (a[3] = 1; a[3] < 10; a[3]++) {for (a[4] = 1; a[4] < 10; a[4]++) { for (a[5] = 1; a[5] < 10; a[5]++) {for (a[6] = 1; a[6] < 10; a[6]++) { for (a[7] = 1; a[7] < 10; a[7]++) {for (a[8] = 1; a[8] < 10; a[8]++) { int row1 = a[0] + a[1] + a[2]; int row2 = a[3] + a[4] + a[5]; int row3 = a[6] + a[7] + a[8]; int col1 = a[0] + a[3] + a[6]; int col2 = a[1] + a[4] + a[7]; int col3 = a[2] + a[5] + a[8]; if (col1 == col2 && col2 == col3 && row1 == row2 && row1 == row3 && col1 == row1) {for (int i = 0; i < 9; i++) {set.add(a[i]);}if (set.size() == 9) {count++;} }} }} }} }} }}System.out.println(count); }}

计划用 set进行去重,但是发现没去了。

求大神解释一下

java算法题,set内出现重复元素

问题解答

回答1:

每次循环都得把set清空

标签: java