Нахождение заданной c субматрицы данной матрицы - PullRequest
1 голос
/ 01 мая 2020

Допустим, у меня есть этот двумерный массив, который мы назовем матрицей

float[,] arr = { {0, 2, 7 },
                 {3, 1, 0 },
                 {6, 2, 4 } };

Мне нужно создать функцию, в которой вы дадите два целых числа i и j, и она вернет матрицу без этого i- строка и J-столбец. Например, если я передам (0,0) в качестве параметров, я получу

float [,] newArr = {{1, 0 },
                    {2, 4 } }

Поскольку строка 0 и столбец 0 были удалены.

Решение, которое я смог найти самостоятельно эта функция работает нормально и выполняет то, что должна, но я хочу более компактное решение, которое имеет больше смысла массив

1 Ответ

1 голос
/ 02 мая 2020

Вот краткий пример другого подхода.

class Program
{
    static void Main(string[] args)
    {
        float[,] arr = { {0, 2, 7 },
                         {3, 1, 0 },
                         {6, 2, 4 } };
        int x = 0;
        int y = 0;
        float[,] arr2 = SubMatrix(arr, x, y);

        for (int i = 0; i < arr2.GetLength(0); i++)
        {
            for (int j = 0; j < arr2.GetLength(1); j++)
            {
                Console.Write(arr2[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.ReadKey();
    }

    private static float[,] SubMatrix(float[,] matrix, int x, int y)
    {
        float[,] result = new float[matrix.GetLength(0) - 1, matrix.GetLength(1) - 1];
        for (int i = 0; i < result.GetLength(0); i++)
        {
            for (int j = 0; j < result.GetLength(1); j++)
            {
                result[i, j] = matrix[i >= x ? i + 1 : i, j >= y ? j + 1 : j];
            }
        }
        return result;
    }
}

Вывод

1 0
2 4
...