gpt4 book ai didi

java - int 数组的对角反射

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:00:28 25 4
gpt4 key购买 nike

我想对布置在板上的 int 数组执行对角线反射,围绕从左到右下降的对角线进行反射。这是在使用 N queens puzzle 时“翻转棋盘”的尝试。 .

  • 数组显示在大小为 n*n
  • 的板上
  • 数组的长度为n
  • 数组的索引代表行(即arr[0]表示第一行)
  • 索引处的值表示皇后的水平放置(即 arr[2] = 3; 表示“将皇后放在第 3 行的第 4 列”(从零开始的索引) )

例子

int[] matrix = {0,2,4,1,3};

将显示为

[Q x x x x]
[x x Q x x]
[x x x x Q]
[x Q x x x]
[x x x Q x]

运行命令后

matrix = diagonalReflection(matrix);

矩阵应该是这样的(注意,反射是基于降对角线的)

[Q x x x x]
[x x x Q x]
[x Q x x x]
[x x x x Q]
[x x Q x x]

我将如何相应地交换元素以实现此结果?

更新:
我可能尝试了 5-10 种不同的方法,但这是我目前使用的方法:

public static Board diagonalReflection(Board src){

int n = src.size();
Board dest = new Board(n);

for (int i = 0; i < n; i++)
dest.set(src.get(i), i);

return dest;
}

功能说明:

Board.get(x) means "return arr[x]"
Board.set(x, y) means "arr[x] = y"

最佳答案

由于您的 int[] 矩阵 变量是一个排列,您可以使用简单的 for 循环构建反射,如下所示:

int[] reflected = new int[matrix.length];
for (int i = 0 ; i != matrix.length ; i++) {
reflected[matrix[i]] = i;
}

在您的示例矩阵 上运行此循环会产生预期的结果

{0, 3, 1, 4, 2}

关于java - int 数组的对角反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22943181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com