创建一个矩阵,其中另一个矩阵采用元素

喜悦

我必须实现一个函数,给定一个0和1的矩阵,它返回一个包含1的坐标的新矩阵。例如:如果矩阵是3x3并且输出是:

1 0 1
0 1 1
0 0 1

新矩阵将为5x2,输出为:

0 0
0 2
1 1
1 2
2 2

一些忠告?我的方法是这样的:

int matrix[3][3];
for (int i = 0; i < 3; i++){
    for (int j = 0; j < 3; j++){
        if (matrix[i][i] == 1){
            //Code i need
        }
    }
}

解决方案实际上取决于要求:

  1. 是否可以分配最大可能的结果矩阵(在这种情况下为9 x 2)。
  2. 如果不允许点1,则严格要求使用固定大小的数组(无动态分配)。如果是这种情况,则可能需要将矩阵传递两次以分配正确的数组大小。

当然,其他解决方案是使用动态分配(使用malloc等)。
选项1和2的简化版本如下所示:

#include <stdio.h>
#include <stdlib.h>


int main(void) {
    int matrix[3][3];
    matrix[0][0] = 1;
    matrix[0][1] = 0;
    matrix[0][2] = 1;
    matrix[1][0] = 0;
    matrix[1][1] = 1;
    matrix[1][2] = 1;
    matrix[2][0] = 0;
    matrix[2][1] = 0;
    matrix[2][2] = 1;

    //Solution 1 - If allowed to allocate matrix with size more than the result,
    //i.e. if input is 3x3 matrix, then the maximum size of result matrix is 9 x 2
    int resultMatrix1[9][2];
    int usedCount1=0;
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++) {
            if (matrix[i][j] == 1) {
                resultMatrix1[usedCount1][0] = i;
                resultMatrix1[usedCount1][1] = j;
                usedCount1++;
            } //end if
        } //end for
    } //end for
    //Print the result
    printf("\nSolution 1\n");
    for (int i = 0; i < usedCount1; i++){
        printf("%d %d\n", resultMatrix1[i][0], resultMatrix1[i][1]);
    } //end for


    //Solution 2 - strictly allocate matrix with size equal to the result.
    //Without using dynamic allocation, meaning we need to have two passes.

    //1st pass is to count the element which satisfy the criteria
    int usedCount2=0;
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++) {
            if (matrix[i][j] == 1) {
                usedCount2++;
            } //end if
        } //end for
    } //end for

    int resultMatrix2[usedCount2][2]; //allocate the right size
    int idx=0;
    //2nd pass is to fill in the result matrix
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++) {
            if (matrix[i][j] == 1) {
                resultMatrix2[idx][0] = i;
                resultMatrix2[idx][1] = j;
                idx++;
            } //end if
        } //end for
    } //end for

    //Print the result
    printf("\nSolution 2\n");
    for (int i = 0; i < usedCount2; i++){
        printf("%d %d\n", resultMatrix2[i][0], resultMatrix2[i][1]);
    } //end for

    return 0;
}

两种解决方案的结果都相同:

Solution 1
0 0
0 2
1 1
1 2
2 2

Solution 2
0 0
0 2
1 1
1 2
2 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:从另一个矩阵的元素减去一个矩阵的元素

来自分类Dev

将一个矩阵分配为另一个矩阵的元素

来自分类Dev

将一个矩阵分配为另一个矩阵的元素

来自分类Dev

用R中的另一个矩阵创建一个矩阵

来自分类Dev

如何使用另一个矩阵的非NA值以及在其中找到的行和列创建一个新矩阵?

来自分类Dev

在MATLAB中计算一个矩阵与另一个矩阵之间的差矩阵

来自分类Dev

根据另一个矩阵删除矩阵行?

来自分类Dev

如何将一个矩阵的元素替换为另一个

来自分类Dev

矩阵:创建一个矩阵,其中包含3个矩阵的所有元素的平均值

来自分类Dev

矩阵:创建一个矩阵,其中包含3个矩阵的所有元素的平均值

来自分类Dev

使用矩阵元素作为另一个矩阵的索引

来自分类Dev

将矩阵元素转移到另一个矩阵的对角线上

来自分类Dev

用另一个矩阵对矩阵中的行元素进行排序

来自分类Dev

numpy:使用一个矩阵作为另一个矩阵的索引来创建张量吗?

来自分类Dev

numpy:使用一个矩阵作为另一个矩阵的索引来创建张量吗?

来自分类Dev

并排放置矩阵以创建另一个矩阵

来自分类Dev

从另一个没有循环的矩阵的随机块行创建矩阵(在R中)?

来自分类Dev

通过另一个矩阵中的值汇总一个矩阵

来自分类Dev

在MATLAB中将一个矩阵与另一个矩阵相加

来自分类Dev

从另一个矩阵中查找和排除一个矩阵

来自分类Dev

在R中将一个矩阵拟合到另一个矩阵

来自分类Dev

将一个矩阵子集化为另一个矩阵

来自分类Dev

在R中用另一个矩阵索引一个矩阵时,保留结构

来自分类Dev

用R中的另一个矩阵替换一个矩阵

来自分类Dev

根据行名将值从一个矩阵取到另一个矩阵

来自分类Dev

根据另一个矩阵的值索引一个矩阵

来自分类Dev

创建一个矩阵,其中A(i,j)= i * j

来自分类Dev

根据另一个矩阵中的值将一个矩阵的元素求和成一个数组

来自分类Dev

根据另一个矩阵中的值将一个矩阵的元素求和到一个数组中

Related 相关文章

  1. 1

    R:从另一个矩阵的元素减去一个矩阵的元素

  2. 2

    将一个矩阵分配为另一个矩阵的元素

  3. 3

    将一个矩阵分配为另一个矩阵的元素

  4. 4

    用R中的另一个矩阵创建一个矩阵

  5. 5

    如何使用另一个矩阵的非NA值以及在其中找到的行和列创建一个新矩阵?

  6. 6

    在MATLAB中计算一个矩阵与另一个矩阵之间的差矩阵

  7. 7

    根据另一个矩阵删除矩阵行?

  8. 8

    如何将一个矩阵的元素替换为另一个

  9. 9

    矩阵:创建一个矩阵,其中包含3个矩阵的所有元素的平均值

  10. 10

    矩阵:创建一个矩阵,其中包含3个矩阵的所有元素的平均值

  11. 11

    使用矩阵元素作为另一个矩阵的索引

  12. 12

    将矩阵元素转移到另一个矩阵的对角线上

  13. 13

    用另一个矩阵对矩阵中的行元素进行排序

  14. 14

    numpy:使用一个矩阵作为另一个矩阵的索引来创建张量吗?

  15. 15

    numpy:使用一个矩阵作为另一个矩阵的索引来创建张量吗?

  16. 16

    并排放置矩阵以创建另一个矩阵

  17. 17

    从另一个没有循环的矩阵的随机块行创建矩阵(在R中)?

  18. 18

    通过另一个矩阵中的值汇总一个矩阵

  19. 19

    在MATLAB中将一个矩阵与另一个矩阵相加

  20. 20

    从另一个矩阵中查找和排除一个矩阵

  21. 21

    在R中将一个矩阵拟合到另一个矩阵

  22. 22

    将一个矩阵子集化为另一个矩阵

  23. 23

    在R中用另一个矩阵索引一个矩阵时,保留结构

  24. 24

    用R中的另一个矩阵替换一个矩阵

  25. 25

    根据行名将值从一个矩阵取到另一个矩阵

  26. 26

    根据另一个矩阵的值索引一个矩阵

  27. 27

    创建一个矩阵,其中A(i,j)= i * j

  28. 28

    根据另一个矩阵中的值将一个矩阵的元素求和成一个数组

  29. 29

    根据另一个矩阵中的值将一个矩阵的元素求和到一个数组中

热门标签

归档