假设我们有一个全0的mxn矩阵,我需要生成数组的所有可能组合,其中一行中只有一个元素初始化为1,而该行中的所有其他元素都是0。类似地,在所有行中,恰好一个元素应该是1. ex:采用3x2矩阵,以下应该是输出:
[1 0,1 0,1 0],[1 0,1 0,0 1],[1 0,0 1,1 0],[1 0,0 1,0 1],[0 1 ,1 0,1 0],[0 1,1 0,0 1],[0 1,0 1,1 0],[0 1,0 1,0]
方括号内的值是3x2矩阵,每行用逗号分隔。所以基本上,mxn矩阵将具有n个幂m组合。 任何想到解决这个问题的方法的人都会发布它,这非常重要。提前谢谢
答案 0 :(得分:1)
由于这听起来像是家庭作业,我不打算给你一个完整的解决方案,而是朝着正确方向迈出的一些步骤。让我们从3x2矩阵开始。我们可以使用嵌套for循环来解决这个问题:
int row0, row1, row2;
for(row0=0; row0<2; ++row0) {
matrix[0][row0] = 1;
for(row1=0; row1<2; ++row1) {
matrix[1][row1] = 1;
for(row2=0; row2<2; ++row2) {
matrix[2][row2] = 1;
print_matrix(matrix);
matrix[2][row2] = 0;
}
matrix[1][row1] = 0;
}
matrix[0][row0] = 0;
}
当然,这不是一个非常通用的解决方案。很容易将其更改为3xm矩阵(只需将row#<2
替换为row#<m-1
),但显然这对nxm矩阵不起作用。每当我们将n增加1时,我们需要添加另一个for循环。
我让你知道如何摆脱嵌套的for循环并使用其他技术来概括它。