gpt4 book ai didi

java - 从数独矩阵的每一行和每一列中随机删除一个元素

转载 作者:行者123 更新时间:2023-11-29 04:26:05 24 4
gpt4 key购买 nike

在上一篇文章中,我提到了如何从每一行中删除数独矩阵中的一个元素。现在,我正在考虑从数独矩阵中删除一个元素的方法,但是对于每一行和每一列。我正在考虑创建一个数组来存储列索引,如果元素在行中被删除。然后在下一行中,您是否重复删除另一个元素检查以查看您删除的数字是否在先前存储的列索引中。虽然我不认为这将是一个非常有效的算法。

从行方法中删除元素

public static void remove_Sud (int [][] S){ // Remove sudoku method 
for(int i = 0; i < S.length; i++){ // For loop iterate through length of matrix array
int randomPosition = (int) Math.floor(Math.random() * S.length); //Random number between 0 and 2
S[i][randomPosition] = 0; // 0 or whatever you use to represent blank
}

}

Sudoku Matrix

最佳答案

您可以使用此代码。我没有制作具有完美数独值的矩阵,但您可以看到输出。函数是deleteRandom()

8 1 5 4 2 5 3 0 2 1 
3 6 0 4 5 5 3 3 5 8
6 9 4 3 8 2 3 8 0 7
2 9 9 1 0 5 7 6 9 2
4 0 6 7 7 9 5 6 6 2
2 9 1 8 8 7 9 9 8 0
0 4 6 2 7 3 8 5 8 1
1 8 5 2 1 8 0 4 8 7
4 7 5 0 6 6 6 4 3 3
9 6 3 5 6 0 4 7 1 6

每一行每一列只有一个零,每次程序执行时它都会改变。

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Set;

public class test {
public static void main(String[] args) {
int[][] sodoku = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
Random random = new Random();
int max = 9;
int min = 1;
sodoku[i][j] = random.nextInt(max - min + 1) + min;
}
}
print(sodoku);
deleteRandom(sodoku);
}

private static void deleteRandom(int[][] sodoku) {
Random r = new Random();
Set<Integer> rowSet = new LinkedHashSet<>();
while (rowSet.size() != 10) {
int answer = r.nextInt(10);
rowSet.add(answer);
}
ArrayList<Integer> rowList = new ArrayList<>();
rowList.addAll(rowSet);

Set<Integer> colSet = new LinkedHashSet<>();
while (colSet.size() != 10) {
int answer = r.nextInt(10);
colSet.add(answer);
}
ArrayList<Integer> colList = new ArrayList<>();
colList.addAll(colSet);
for (int i = 0; i < 10; i++) {
sodoku[rowList.get(i)][colList.get(i)] = 0;
}
System.out.println();
print(sodoku);
}

private static void print(int[][] sodoku) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.print(sodoku[i][j] + " ");
}
System.out.println();
}
}
}

关于java - 从数独矩阵的每一行和每一列中随机删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46184765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com