2017-03-31 61 views
-1

我對C++相當新,所以很抱歉,如果這是一個簡單的問題!麻煩返回一個向量數組C++

我目前正在製作一個Sudoku解算器。每個單元格都有一個候選列表,它可能是一組值。候選值通過刪除同一行,列和塊上的值而減少,直到最終在候選列表中只有一個單值,並且這將是該單元的新求解值。

我有這部分工作,但另一種方式可以解決的單元格是'隱藏價值'。通過比較單元格的候選列表和單元格的行,列或塊中的候選列表來找到隱藏值。如果當前單元格的候選列表中有一個值不能在其他單元格中找到,那麼它必須是單元格的求解值。

我遇到的麻煩是返回單元格的候選列表,所以我可以將它與其他人一起返回。

我有一個單元類和一個單元組類。單元組基本上是一行,一列或一個塊。每個組包含9個細胞。

電池組類我有以下方法:

int CellGroup::checkHiddenSinglesRow(Cell * cell) const 
{ 
int candidateList[] = { cell->getCandidateList() }; //not returning correctly 

int hiddenSingle = 0; 
for (int i = 0; i < 9; ++i) 
{ 
    Cell *cells = m_cells[i]; 
    bool found = cells->SearchCandidateList(value); 
    if (found == true) { 

     hiddenSingle = hiddenSingle + 1; 
    } 
} 
return hiddenSingle; 

}

搜索候選方法基本上經過一個單元的候選名單,如果找到了,則返回true, 在細胞類

bool Cell::SearchCandidateList(int value) { 
bool found; 
auto it = find(m_candidateList.begin(), m_candidateList.end(), value); 
if (it != m_candidateList.end()) { 
    found = true; 
} 
else { 
    found = false; 
} 
return found; 

}

這是我用於返回電流單元候選列表,在細胞類的方法:

int Cell::getCandidateList(void) const 
{ 
for (auto i = m_candidateList.begin(); i != m_candidateList.end(); ++i) { 
    int j; 
    j = *i; 
    return j; 
} 


} 

的getCandidateList正在返回1,其可以是在候選列表中的第一個值。 將列表作爲數組返回可能很有用,因此我可以比較其中的值,但是我不確定如何實現此操作。

任何幫助將大規模感激!

感謝露西

+3

你爲什麼不返回*實際*載體呢? –

回答

0

可以返回這樣的載體:

std::vector<int> Cell::getCandidateList() const 
{ 
    return m_candidateList; 
} 
+0

謝謝!現在它 – lCopp