0

C ++で数独ソルバーを作ろうとしています。[9] から [9] までの配列を保持したい (明らかに)。私は今、可能な値を追跡する方法を考え出しています。配列内のすべてのエントリのリストについて考えました。したがって、リストには最初は 1 から 9 の数字があり、反復ごとにいくつかの値を取り除くことができます。

ここで私の質問は、2D 配列のすべてのエントリに 1 つのリストを割り当てることはできますか? 他に、他の/より良いオプションはありますか?

私はスターター プログラマーであり、これは基本的に C++ での最初のプロジェクトです。前もって感謝します!

4

3 に答える 3

0

簡単な解決策の 1 つは、各正方形に 1 ビット フラグのセットを使用することです。

uint16_t board[9][9]; // 16 x 1 bit flags for each square where 9 bits are used
                      // to represent possible values for the square

次に、ビットごとの演算子を使用して、各ビットを設定/クリア/テストできます。

board[i][j] |= (1 << n);  // set bit n at board position i, j

board[i][j] &= ~(1 << n); // clear bit n at board position i, j

test = (board[i][j] & (1 << n)) != 0; // test bit n at board position i, j
于 2013-06-17T12:56:58.363 に答える