2013-04-18 75 views
0

所以我一直在努力編寫一個函數,它將爲數獨謎題生成數字。這就是它的樣子。一個數字只出現一次?

我有點失落在最後一行......我如何檢查一個數字是否只出現在一行和一列?

void generator (int row, int col){ 

    for (int i=0; i<9; i++){ 
     int randNum= (1+rand()%9); 
     for (int j=0; j<i; j++){ 
      A[i][j]=randNum; 
      //check if one number only appears once. 
     } 

    } 
} 

回答

0

我會將每個隨機數添加到一個向量。然後,在生成每個數字後,遍歷所有矢量成員以檢查已存在的值。

2

你這樣做完全錯了。

你應該根據規則簡單地填寫數獨,從1開始。

當您有一個有效的數獨後,隨機切換數字使用隨機排列。

請注意,這是一個相當複雜的問題(如果您包括真正的數獨代,而不僅僅是填充板),而且您很可能低估了它。

+0

謝謝。但我將如何做隨機排列的一部分? – sis007

+0

@ sis007許多選項。你可以使用'random_shuffle'' http://www.cplusplus.com/reference/algorithm/random_shuffle/ –