[英]Finding repeated numbers in a 2x2 array. (Java)
我是一名编程新手,我被要求在Java中创建一个程序,该程序可以读取数独网格中的数字,并确保列和行中没有重复的数字,这是我到目前为止所拥有的:
int e=0;
int h=0;
boolean k = true;
int sd = 0;
for (int i=0; i< 9; i++){
for (int j=i+1; j< 9; j++){
if (sudoku[j][0]==sudoku[i][0]){
k=false;
}
}
}
for (int i=0; i< 9; i++){
for (int j=i+1; j< 9; j++){
if (sudoku[0][j]==sudoku[0][i]){
k = false;
}
}
}
if ( k){
System.out.println("Valid sudoku");
}
else if ( !k){
System.out.println("Not a valid sudoku");
}
}
我的代码无法正常运行,因为它始终显示有效的数独,即使在原本不应该的情况下,我也想知道如何解决此问题。 在此之前,我感谢您为我提供的任何帮助。 (我想到了将其扫描为1x1数独的想法,但添加0使其在每种情况下都从第0列和第1行开始)。
在您阅读此代码之前,我只是建议您,将会有更优雅的解决方案来解决您的问题。 我已经参考您的代码编写了此代码。
在这段代码中, testColumn()
和testRow()
是两个方法,其作用只是检查该行/列中是否存在数字(作为这些函数的参数传递)。
int testColumn(int grid[9][9], int column, int number) {
for(int row=0; row<9; row++) {
if(grid[row][column]==number) {
return 1;
}
}
return 0;
}
int testRow(int grid[9][9], int row, int number) {
for(int column=0; column<9; column++) {
if(grid[row][column]==number) {
return 1;
}
}
return 0;
}
void checkRowColumn(int grid[9][9]) {
boolean k=true;
for(int row=0; row<9; row++) {
for(int column=0; column<9; column++) {
int numberToCheck = grid[row][column];
if(testColumn(grid, column, numberToCheck)) {
k = false;
}
if(testRow(grid, row, numberToCheck)) {
k = false;
}
}
}
if(k) {
System.out.println("Valid Sudoku");
}
else {
System.out.println("Invalid Sudoku");
}
}
PS我还没有编译这段代码。 如果有任何编译时错误,我提前致歉。 我欢迎任何建议或修改建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.