2014-01-16 42 views
1

該代碼的目的是在每個水平行中查找重複數字1-9。當然,當我開始工作時,我會做到這一點,所以它會在垂直行上工作。在2D中查找重複項在運行時無法正常工作,但在調試時

所以這是我的代碼,我認爲它應該是一個工作代碼,以在所有水平行中的二維數組中找到重複。

我有一個非常奇怪的問題,我的Sudoku解決代碼,它似乎工作時,我調試,但是當我運行它總是說,它發現重複。這是我錯過的東西,還是代碼中的邏輯完全錯誤,不應該是這樣,6個小時後我完全失去了。

下面是代碼:

public bool UniqRowX(Square rutor) 
{ 
    int duplicate = 0; 

    for (int row = 0; row < 9; row++) 
    { 
     for (int find_duplicate_nummber = 1; find_duplicate_nummber < 10; find_duplicate_nummber++) 
     { 
      for (int col = 0; col < 9; col++) 
      { 
       if(rutor.SudokuArray[row, col].nummer==find_duplicate_nummber) 
       { 
        duplicate = duplicate + 1; 
       } 
       if(duplicate>1) 
       { 
        MessageBox.Show("Duplicate!"); 
        return false; 
        break; 
       } 
      } 
     } 
    } 
    MessageBox.Show("No Duplicate"); 
    return true; 
} 

Whole Solution

+0

爲什麼有Thread.Sleep(100)?你有涉及多線程? –

+0

您應該創建一個適當的數據模型,其中'Square'類表示數獨板中的單個單元格,而不是整個板,並且還包含'Row'和'Column'數字屬性,您可以使用LINQ來查詢它們從500年前那個可怕的'for'循環。 –

+0

@ThomasW。我刪除它,與代碼無關 –

回答

1

根據你的邏輯,它看起來像你應該後每次通過列被設置「複製」變量爲0。

相關問題