描述: 给定矩阵[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);
}
}
}