【发布时间】:2015-04-07 13:09:06
【问题描述】:
您好,我需要知道如何将阵列原地旋转 180 度。目前我可以让它旋转 90 度,但不能让它进一步旋转。如果有人可以帮助我,那就太好了,因为我已经在这个问题上停留了几天。谢谢,这是我的代码:
namespace Question_2_1_
{
class Program
{
static void Main(string[] args)
{
int[,] array = new int[4, 4] {
{ 1,2,3,4 },
{ 5,6,7,8 },
{ 9,0,1,2 },
{ 3,4,5,6 } };
int[,] rotated = RotateMatrix(array, 4);
var rowCount = array.GetLength(0);
var colCount = array.GetLength(1);
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < colCount; j++)
{
Console.Write(String.Format("{0}", rotated[i, j]));
}
Console.Write(Environment.NewLine);
}
Console.ReadLine();
}
static int[,] RotateMatrix(int[,] matrix, int n)
{
int[,] ret = new int[n, n];
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
ret[i, j] = matrix[n - j - 1, i];
}
}
return ret;
}
}
}
【问题讨论】:
-
在为此类问题输入代码之前,我喜欢将其可视化(例如,使用笔和纸)。一旦您知道每个条目的结束位置,输入代码就很容易了。
-
如果你确定旋转 90 度有效的话......做两次。
-
您能否在代码底部添加预期结果(作为 cmets)?我想清楚你所说的轮换是什么意思。