0

私の講師は、n-Queens 問題のコース ノートにいくつかの疑似コードを提供しています。残念ながら、Java での実装を理解するのに少し苦労しています。問題の疑似コードは次のとおりです。

Queens (currentBoard , currentRow, n) :
    if currentRow == n:
        if currentBoard is legal:
            return <currentBoard, 1>
        else:
            return <currentBoard, 0>
    else:
        for k = 1..n:
            newBoard = currentBoard + <currentRow+1, k>
            board [k], success[k] = Queens(newBoard, currentRow+1, n)
        kmax = index of max(success[k])
        return <board[kmax], success[kmax]>

そのほとんどは理解できますが、山括弧内にある疑似コードの部分で何をするつもりなのかわかりません。

4

1 に答える 1

4

ここの山かっこは、複数の「オブジェクト」が返されることを示しています。

したがって、たとえば、このコード

return <currentBoard, 1>

currentBoard一方ではオブジェクトを返し、他方では単純な を返します1

このコードでは

board [k], success[k] = Queens(newBoard, currentRow+1, n)

両方のオブジェクトが異なる変数に格納されていることがわかります。to board が入りboard[k]、number が入りsuccess[k]ます。

于 2012-05-10T09:48:09.717 に答える