我正在为学校的Sudoku-Solving项目工作,以某种方式将两个数组以某种方式链接在一起,即当我更改array1中的值时,它也会同时更改array2中的值。请不要讨厌我对我的组织^^。完成后,我将清理/改进代码。
我已经声明了两个不同的字符串数组变量:“ sudokuFelder”和“ sudokuUngeloest”。
我仅更改“ sudokuFelder”的值,而不更改“ sudokuUngeloest”的值,但是以某种方式调试数组时总是具有相同的值。]]
真的很欢迎任何帮助。
class SudokuAlgorithmus { public string[,] sudokuFelder; public string[,] sudokuUngeloest; public bool richtigeZeile; public bool richtigeSpalte; public bool richtigesKaestchen; private static int UNASSIGNED = 0; public SudokuAlgorithmus() { sudokuFelder = new string[9, 9]; } public SudokuAlgorithmus(string[,] sudoku, int indexZeile, int indexSpalte) { this.sudokuFelder = sudoku; sudokuUngeloest = sudoku; richtigeZeile = PruefZeile(indexZeile, indexSpalte); richtigeSpalte = PruefSpalte(indexZeile, indexSpalte); richtigesKaestchen = PruefKaestchen(indexZeile, indexSpalte); LoeseSudoku(); } private void LoeseSudoku() { for(int i=0;i<9;i++) //Spalte { for(int j=0;j<9;j++) // Zeile { if(SudokuKaestchenFrei(j,i) == true) { for(int k=1;k<=9;k++) { sudokuFelder[i, j] = k.ToString(); if(PruefZeile(j,i) == false || PruefSpalte(j,i) == false || PruefKaestchen(j,i) == false) { sudokuFelder[i, j] = ""; } else { break; } } if (sudokuFelder[i, j] == "") { if(j!=0) { for(int l =j-1;l>=0;l--) { if (SudokuKaestchenFreiUngeloest(l, i) == true) { j = l-1; sudokuFelder[i, l] = ""; break; } } } else { i = i - 1; j = 8; } } } } } } private bool SudokuKaestchenFrei(int indexZeile, int indexSpalte) { bool frei = false; if (sudokuFelder[indexSpalte, indexZeile] == "" || sudokuFelder[indexSpalte, indexZeile] == " " || sudokuFelder[indexSpalte, indexZeile] == null) { frei = true; return frei; } return frei; } private bool SudokuKaestchenFreiUngeloest(int indexZeile, int indexSpalte) { bool frei = false; if (sudokuUngeloest[indexSpalte, indexZeile] == "" || sudokuUngeloest[indexSpalte, indexZeile] == " " || sudokuUngeloest[indexSpalte, indexZeile] == null) { frei = true; return frei; } return frei; } private bool PruefZeile(int indexZeile, int indexSpalte) { bool gueltig = true; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (sudokuFelder[i, indexZeile] == sudokuFelder[j, indexZeile] && sudokuFelder[i, indexZeile] != " " && i != j) { gueltig = false; return gueltig; } } } return gueltig; } private bool PruefSpalte(int indexZeile, int indexSpalte) { bool gueltig = true; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (sudokuFelder[indexSpalte, i] == sudokuFelder[indexSpalte, j] && sudokuFelder[indexSpalte, i] != " " && i!=j) { gueltig = false; return gueltig; } } } return gueltig; } private bool PruefKaestchen(int indexZeile, int indexSpalte) { bool gueltig = true; if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 0 && indexZeile <= 2) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 0 && indexZeile <= 2) { for (int i = 3; i < 6; i++) { for (int j = 0; j < 3; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 0 && indexZeile <= 2) { for (int i = 6; i < 9; i++) { for (int j = 0; j < 3; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 3 && indexZeile <= 5) { for (int i = 0; i < 3; i++) { for (int j = 3; j < 6; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 3 && indexZeile <= 5) { for (int i = 3; i < 6; i++) { for (int j = 3; j < 6; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 3 && indexZeile <= 5) { for (int i = 6; i < 9; i++) { for (int j = 3; j < 6; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 6 && indexZeile <= 8) { for (int i = 0; i < 3; i++) { for (int j = 6; j < 9; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 6 && indexZeile <= 8) { for (int i = 3; i < 6; i++) { for (int j = 6; j < 9; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 6 && indexZeile <= 8) { for (int i = 3; i < 6; i++) { for (int j = 6; j < 9; j++) { if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j) { gueltig = false; return gueltig; } } } } return gueltig; } }
}
我正在为学校的Sudoku-Solving项目工作,以某种方式将两个数组以某种方式链接在一起,即当我更改array1中的值时,它也会同时更改array2中的值。请...
:-)您了解这段代码的含义吗?!您需要有关C#的更多知识。