gpt4 book ai didi

c# - 旋转多维数组的部分

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:04 24 4
gpt4 key购买 nike

我需要能够通过声明范围和方向来旋转多维数组的一部分。

假设我有一个 int 数组:

[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
[13, 14, 15, 16]

如果我的范围从 [2,2] 到 [3,3] 并且顺时针旋转,我会得到:

[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 15, 11]
[13, 14, 16, 12]

然后如果我将范围 [0,1] 应用到 [2,3] 并逆时针旋转,我将得到:

[1, 2, 3, 4]
[7, 15, 16, 8]
[6, 10, 14, 11]
[5, 9, 13, 12]

数组将始终是矩阵 NxN (2*2,3*3,4*4..)。仅旋转矩阵不是问题,但我在矩阵内部仅旋转一部分时遇到问题。我如何在 C# 中执行此操作?

最佳答案

这让我想起了this hackerrank problem .

我看不出你的具体问题是什么 - 你可以把这个子矩阵作为一个独立的对象并旋转它。

例如考虑以下算法:

  1. 将您的矩阵视为一组“电路”
  2. 将这些 “电路” 一个接一个。
  3. 对于每个电路应用旋转 - 不要忘记检查您是否 number of rotations% circuit perimeter = 0(在这种情况下旋转是不变的)
  4. 对于“电路”中的每个整数,只需计算它的新位置(矩阵索引的一些简单数学)。

在你的子矩阵的所有电路都旋转后你得到了你的结果。

关于c# - 旋转多维数组的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35689419/

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