我剛開始製作我的數獨遊戲,並且我創建了這個函數grid
用於創建一個數獨網格6x6
。我已經使用rand()
函數爲每個單元格中的不同數字(目前它只會檢查重複數字的行)。 rand()
也用於每個網格中隨機數的空單元格。數獨格生成器
問題是,有時網格是完美的6x6
並沒有任何重複的數字(僅在行中),但是,有時在某些單元格中會生成垃圾值,有時會增加列數。我不明白是什麼導致了這個問題?
驗證碼:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void grid(void) {
int cell[6][6], row, col, s, i, j;
char in = 'A';
srand(time(NULL));
for (row = 0; row <= 5; row++) {
printf("\t\t\t[ |");
for (col = 0; col <= 5; col++) {
s = rand() % 6 + 1;
if (s % 2 == 0)
{
cell[row][col] = rand() % 6 + 1;
for (j = 0; j<col; j++) {
if (cell[row][j] == cell[row][col]) {
col--;
continue;
}
}
}
else { printf(" | ", in++); continue; }
printf(" %d | ", cell[row][col]);
}
printf("]\n\n");
}
}
int main()
{
grid();
}
您使用的Pico縮進樣式對於Pico可能沒有問題,但C不是Pico。請使用正統C [縮進樣式](https://en.wikipedia.org/wiki/Indent_style) - 我更喜歡Allman,但許多人更喜歡1TBS的一些變體。堅持這些或那些你不會錯誤。 –
在6x6數獨板中,通常有6行2行3列的子單元,並且必須保留每個子單元中以及每行和每列中的6個數字的唯一性。您的代碼似乎沒有足夠符合這些標準。在9x9板中,您將擁有9個子單元,每個子單元的大小均爲3x3,每個子單元中以及每行和每列中的數字都是唯一的。我想知道你是否會隨機更換6件物品來做更好的事情? (我沒有編寫Sudoku生成器,我不知道最好的方法,但是SO標籤上有700個問題[標籤:sudoku]!) –