如何在二维数组中存储项目,其中下一行将从前一行的最后一项开始 - C#

问题描述 投票:0回答:2

所以基本上我试图找出一种将项目存储在 n*n 矩阵中的方法,其中下一行将从前一行的最后一项开始。我对 C# 有点陌生,所以我也希望有新的方法来解决这个问题。 最终结果应该是这样的:

  1. 假设我们有一个字符串“Hello”,
  2. 这个字符串需要存储在一个二维数组中,如下所示: 你好 哦地狱 洛赫尔 洛赫 你好

到目前为止,我只是做了一个简单的操作,在每一行中打印相同的字符串:

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();
}
c# algorithm matrix
2个回答
1
投票
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();
}

0
投票

而不是

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];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.