diff --git a/3.cpp b/3.cpp new file mode 100644 index 0000000..d786e88 --- /dev/null +++ b/3.cpp @@ -0,0 +1,36 @@ +#include +#include + +bool panduan(int board[9][9]) { + for (int i = 0; i < 9; i++) { + bool row[10] = { 0 }, col[10] = { 0 }, block[10] = { 0 }; + for (int j = 0; j < 9; j++) { + if (board[i][j] != 0) { + if (row[board[i][j]]) { + printf("The number %d in row %d has been used!\n", board[i][j], i); + return false; + } + row[board[i][j]] = true; + } + + if (board[j][i] != 0) { + if (col[board[j][i]]) { + printf("The number %d in column %d has been used!\n", board[j][i], i); + return false; + } + col[board[j][i]] = true; + } + + int blockRow = 3 * (i / 3), blockCol = 3 * (i % 3); + if (board[blockRow + j / 3][blockCol + j % 3] != 0) { + if (block[board[blockRow + j / 3][blockCol + j % 3]]) { + printf("The number %d in block %d has been used!\n", + board[blockRow + j / 3][blockCol + j % 3], (i / 3) * 3 + (i % 3)); + return false; + } + block[board[blockRow + j / 3][blockCol + j % 3]] = true; + } + } + } + return true; +} \ No newline at end of file