所以基本上我试图找出一种将项目存储在 n*n 矩阵中的方法,其中下一行将从前一行的最后一项开始。我对 C# 有点陌生,所以我也希望有新的方法来解决这个问题。 最终结果应该是这样的:
到目前为止,我只是做了一个简单的操作,在每一行中打印相同的字符串:
string test = "Hello";
int mLength = test.Length;
char[] charArr = test.ToCharArray();
char[][] matrix = new char[mLength][];
//Inserting into the matrix
for(int i = 0; i < mLength; i++)
{
matrix[i] = new char[mLength];
for(int j = 0; j < mLength; j++)
{
matrix[i][j] = charArr[j];
}
}
//For printing the matrix
for(int m = 0; m < matrix.Length; m++)
{
for(int n = 0; n < matrix[m].Length; n++)
{
Console.Write(matrix[m][n]);
}
Console.WriteLine();
}
string test = "Hello";
int mLength = test.Length;
char[] charArr = test.ToCharArray();
char[][] matrix = new char[mLength][];
// Inserting into the matrix
for (int i = 0; i < mLength; i++)
{
matrix[i] = new char[mLength];
for (int j = 0; j < mLength; j++)
{
matrix[i][j] = charArr[(i + j) % mLength];
}
}
// For printing the matrix
for (int m = 0; m < matrix.Length; m++)
{
for (int n = 0; n < matrix[m].Length; n++)
{
Console.Write(matrix[m][n]);
}
Console.WriteLine();
}
而不是
matrix[i][j] = charArr[j];
你应该使用 matrix[i][j] = charArr[(j + mLength - i) % mLength];
:
for (int i = 0; i < mLength; i++)
{
matrix[i] = new char[mLength];
for (int j = 0; j < mLength; j++)
{
matrix[i][j] = charArr[(j + mLength - i) % mLength];
}
}