C# 将多维数组反转4次
对于一个简单的游戏,我需要一个在启动时动态生成的记分板。此记分板以多维数组的形式存储在C#中。生成基本分数并不难,但问题是这个数组应该反转4次,如下所示 多维数组: int[,] scoreBoard = new int[4, 4]; int[,]记分板=新int[4,4]; 基本数字: { 5, 10, 15, 20 10, 15, 20, 25 15, 20, 25, 30 } { 5, 10, 15, 20 10, 15, 20, 25 15, 20, 25, 30 } 应成为: { 5, 10, 15, 20, 20, 15, 10, 5 10, 15, 20, 25, 25, 20, 15, 10 15, 20, 25, 30, 30, 25, 20, 15 15, 20, 25, 30, 30, 25, 20, 15 10, 15, 20, 25, 25, 20, 15, 10 5, 10, 15, 20, 20, 15, 10, 5 } { 5, 10, 15, 20, 20, 15, 10, 5 10, 15, 20, 25, 25, 20, 15, 10 15, 20, 25, 30, 30, 25, 20, 15 15, 20, 25, 30, 30, 25, 20, 15 10, 15, 20, 25, 25, 20, 15, 10 5, 10, 15, 20, 20, 15, 10, 5 }C# 将多维数组反转4次,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,对于一个简单的游戏,我需要一个在启动时动态生成的记分板。此记分板以多维数组的形式存储在C#中。生成基本分数并不难,但问题是这个数组应该反转4次,如下所示 多维数组: int[,] scoreBoard = new int[4, 4]; int[,]记分板=新int[4,4]; 基本数字: { 5, 10, 15, 20 10, 15, 20, 25 15, 20, 25, 30 } { 5, 10, 15, 20 10, 15,
var结果=阵列反射(记分板);
公共静态T[,]阵列反射(T[,]arr)
{
//数组中的行数
int m=arr.GetLength(0);
//数组中的列数
int n=arr.GetLength(1);
var res=新的T[m*2,n*2];
对于(int r=0;rHow是否反转数组会产生更多元素:?另外,您显示了3x4数组而不是4x4h,他意味着转换它。此解决方案的输出是水平和垂直的,但这让我希望C
更像Fortran
。这在Fortran中应该是一个1行。您的回答对我帮助很大!谢谢!
var result = ArrayReflection(scoreBoard);
public static T[,] ArrayReflection<T>(T[,] arr)
{
// number of rows in array
int m = arr.GetLength(0);
// number of columns in array
int n = arr.GetLength(1);
var res = new T[m*2, n*2];
for(int r=0; r<m; r++)
for(int c=0; c<n; c++)
{
res[r,c] = arr[r,c];
res[r,n + c] = arr[r, n - c - 1];
res[r + m,c] = arr[m - r - 1, c];
res[r+m,n+c] = arr[m - r - 1, n - c - 1];
}
return res;
}