C 언어로 작성된 Sudoku에서 문제를 해결하기 위해 여기 인터넷에서 함수를 발견했습니다. 거의 모든 작업을 수행했지만 여기 붙어있어 3x3 상자를 확인할 수 없습니다. 위로 여기Sudoku 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;
}
. 프로그램은 값과 값을 비교합니다. 내 루프가 잘 작동하지 않습니다.
:
당신은 이중 루프에 하한을 변경 놓친? 나는'if (i! = jj && v [ii] [i] == k)'여기서 행 대신에 값을 비교한다고 생각한다. – SaurabhJinturkar
질문을 명확하게 작성하십시오. 일부 코드에 대한 설명이 필요한 것 같지만 어떤 코드를 혼동하는지 분명하지 않습니다. – anatolyg
첫 번째 루프부터 행/열림을 위해 다음을 확인하십시오. 상자 3x3 확인을위한 것이고 첫 번째 기능에서부터 번역되었습니다. –