我正在用Java编写Sudoku代码。
我已经写了一个代码,但是行而不是列被切换了!
int[] tempField = array2D[myFirstCol_toSwitch];
array2D[myFirstCol_toSwitch] = array2D[mySecondCol_toSwitch];
array2D[mySecondCol_toSwitch] = tempField;
为了生成Sudoku板,我需要随机交换列。
答案 0 :(得分:0)
一列的条目分布在所有行中,每行一项。因此,为了交换两列,您必须遍历所有行并交换每行中的适当项目,如下所示:
// ints c1 and c2 are the indices of the columns to be swapped
for (int[] row : array2d){
{
int t = row[c1];
row[c1] = row[c2];
row[c2] = t;
}
答案 1 :(得分:0)
2D Java数组的“行”和“列”取决于您的角度;即您如何在心理上将数组映射为垂直和水平。
但是,如果您当前在示例中所做的是切换“行”(根据您的思维模型),那么切换“列”的方法就是遍历各个元素。例如像这样的东西:
for (int i = 0; i < array2D; i++) {
int tempField = array2D[i][myFirstCol_toSwitch];
array2D[i][myFirstCol_toSwitch] = array2D[i][mySecondCol_toSwitch];
array2D[i][mySecondCol_toSwitch] = tempField;
}
这可以用(可以说)更整洁的其他方式来写。我选择这种方式是为了清楚地说明转置这两列实际上需要发生什么。