如何用9个3x3矩阵填充9x9数独矩阵?
数独矩阵填充代码问题修复
你的代码里有两个明显错误导致填充逻辑失效:
- 赋值运算符误用:第一行的
matrix_full[i][j]==matrix1[i][j];用了比较运算符==,这只会判断两个值是否相等,不会完成赋值操作,必须改成赋值运算符=。 - 索引重复覆盖:中间区域的matrix6赋值时,错误使用了和matrix5相同的索引
[i+3][j+3],这会直接覆盖掉刚写入的matrix5数据。matrix6对应大矩阵中间行的第三列小矩阵,正确索引应该是[i+3][j+6]。
修正后的完整代码:
void matrix_full_creation() { int i, j; // 注意:如果i、j未全局声明,需要在此处定义 for(i=0;i<3;i++) { for(j=0;j<3;j++) { matrix_full[i][j] = matrix1[i][j]; matrix_full[i][j+3] = matrix2[i][j]; matrix_full[i][j+6] = matrix3[i][j]; matrix_full[i+3][j] = matrix4[i][j]; matrix_full[i+3][j+3] = matrix5[i][j]; matrix_full[i+3][j+6] = matrix6[i][j]; matrix_full[i+6][j] = matrix7[i][j]; matrix_full[i+6][j+3] = matrix8[i][j]; matrix_full[i+6][j+6] = matrix9[i][j]; } } }
另外补充:如果i和j不是全局变量,记得在函数内声明,避免编译错误。
内容的提问来源于stack exchange,提问作者Stefan Bujor
相关产品推荐
相关产品推荐

