计算矩阵中的元素数量

时间:2017-03-22 01:00:16

标签: math matrix

我在编程中解决了一个问题,我有一个矩阵并给出了两个位置,我需要找到它们之间的元素,包括给定的元素

例如,一个1000行和1000列初始位置的矩阵是[499,499],最终位置是[500,500]元素的数量是4

我想知道是否有任何数学公式可以应用于任何矩阵

2 个答案:

答案 0 :(得分:1)

根据您使用的编程语言,获取可用于可能的内存分配的元素数量(500-499+1)*(500-499+1)(x2-x1+1)*(y2-y1+1)。然后,要访问矩阵的元素,您可以创建一个使用提供的值计算的大小矩阵并返回该矩阵。

Matrix getSubMatrix(Matrix matrix, int x1, int y1, int x2, int y2) {
    // This is assuming matrixes can be created this way
    // x2-x1+1 and y2-y1+1 should provide the correct dimensions for the values
    // to be extracted from the provided matrix
    Matrix submatrix = new Matrix(x2-x1+1, y2-y1+1);

    // Now we will itterate through both dimensions of the original matrix
    // and the new matrix
    for (int i = 0; i < x2-x1+1; i++) {
        for (int j = 0; j < y2-y1+1; j++) {
            // The new matrix can be accessed with i and j, but the original matrix
            // requires the offset of x1 and y1
            subMatrix[i][j] = matrix[i+x1][j+y1];
        }
    }
    return submatrix;
}

请注意,您还可以使用数组而不是对象作为输入参数和返回值。正如matt做了他的回答

正如SergGr所指出的那样,x1 > x2y1 > y2可以解决此问题而不是x1 < x2y1 < y2。您可以将方法中的x1替换为min(x1,x2),将x2替换为max(x1,x2),将y1 and y2替换为var i = 2; $(".addmore").on('click',function(){ count=$('table tr').length; var data="<tr><td><input type='checkbox' class='case'/></td><td><span id='snum'>test</span></td></tr>"; $('table').append(data); i++; });

答案 1 :(得分:0)

当然只需要两个for循环:

int[][] matrix = new int[1000][1000];
populateMatrix(matrix); // populate the matrix with some values, somehow

int pos_1_X = 499;
int pos_1_Y = 499;
int pos_2_X = 500;
int pos_2_Y = 500;

int numElements = 0;

for(int x = pos_1_X; x <= pos_2_X; x++) {
    for(int y = pos_1_Y; y <= pos_2_Y; y++) {
        numElements++; // increment the counter
        System.out.printf("matrix[%d][%d] = %d", x, y, matrix[x][y]); // print the element
    }
}

System.out.println("Number of elements: " + numElements);