找到与sum = 10相邻的元素选择

时间:2015-11-28 01:54:31

标签: c++ algorithm recursion

描述: 给定矩阵[x] [y],x行和y列数。从0到5的填充随机数。

找到解决方案的描述:该解决方案被认为是一组彼此相邻的矩阵元素(不考虑对角线邻域),并且该数字的总和为10.矩阵的每个元素都可以用一次作出决定。解决方案可以包含任意数量的数字。决定必须结束零以外的任何数字。

实施例: 给定

0 1 2 3 4 5
1 2 3 4 5 0
2 3 4 5 1 2

解决方案1:(1 - 2 - 3 - 4)

0 **1** 2 3 4 5
1 **2** 3 4 5 0
2 **3** **4** 5 1 2

我试着像这样做,但这是错的,我不知道什么时候必须停下来,  解决方案它是一个包含索引mair的类,请帮助我。

void xxx(int colCount, int rowCount, int currentRow, int currentCol, int** matrix, int sum, Solution *solution, int solCount) {

        sum += matrix[currentRow][currentCol];
        matrix[currentRow][currentCol] = -1;
        if(sum > 10){
            sum -  = matrix[currentRow][currentCol];
            return;
        } else if(sum == 10){
            solution[solCount].additem(currentRow, currentCol);            
            return xxx(5,5,currentRow - 1, currentCol, matrix, sum, solution, solCount+1);
        } else {
            //UP
            if( currentRow > 0 && matrix [currentRow - 1][currentCol] != -1){            
                xxx(5,5,currentRow - 1, currentCol, matrix, sum, solution,solCount);
            }
            //LEFT
            if(currentCol > 0 && matrix [currentRow][currentCol-1] != -1){
                xxx(5,5,currentRow, currentCol - 1, matrix, sum, solution,solCount);
            }
            //DOWN
            if(currentRow + 1 < colCount && matrix[currentRow + 1][currentCol] != -1){
                xxx(5,5,currentRow + 1, currentCol, matrix, sum, solution,solCount);
            }
            //RIGHT
            if(currentCol + 1 < rowCount && matrix[currentRow][currentCol + 1] != -1){
                xxx(5,5,currentRow, currentCol + 1, matrix, sum, solution,solCount);
            }
        }     
}

0 个答案:

没有答案