java算法題,set內出現重復元素
問題描述
題目將數字 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進行去重,但是發現沒去了。
求大神解釋一下
問題解答
回答1:每次循環都得把set清空
