我在網上找到了一個函數來解決我在用C語言編寫的Sudoku上的問題。我已經完成了幾乎所有的事情,但我被困在這裏,我無法檢查3x3框if任何值是重複的:數獨3x3框檢查是否在C中複製
/**
* Check if a value contains in its 3x3 box for a cell.
* @param row current row index.
* @param col current column index.
* @return true if this cell is incorrect or duplicated in its 3x3 box.
*/
private boolean containedIn3x3Box(int row, int col, int value) {
// Find the top left of its 3x3 box to start validating from
int startRow = row/3 * 3;
int startCol = col/3 * 3;
// Check within its 3x3 box except its cell
for (int i = startRow; i < startRow + 3; i++)
for (int j = startCol; j < startCol + 3; j++) {
if (!(i == row && j == col)) {
if (cells[i][j] == value){
return true;
}
}
}
return false;
}
在這裏是函數,我把它放在我的節目在這裏:
int valid(int k, int ii, int jj)
{
int i,start,final,j;
start=ii/3*3;
final=jj/3*3;
for(i = 1; i <= 9; ++i) {
if (i != ii && v[i][jj] == k)
return 0;
if (i != jj && v[ii][i] == k)
return 0;
}
for(i=start;i<=start+3;i++)
for(j=final;j<=final+3;j++)
{
if(!(i==ii && j==jj))
{
if(v[i][j]==k)
return 0;
}
}
return 1;
}
我看了網站上,我把這個功能並試圖理解程序。該程序將值與值部分進行比較。我的循環運行不正常。
爲什麼您使用的有效功能兩個循環?我想'如果(i!= jj && v [ii] [i] == k)'在這裏你是比較值而不是行。 – SaurabhJinturkar
請明確提出您的問題。看起來您需要對某些代碼進行解釋,但是您不清楚哪些代碼會讓您感到困惑。 – anatolyg
第一個循環從它的行/柱檢查下一個爲框3x3檢查它是從第一個功能翻譯。 –