【问题标题】:Find matrix size from one dimensional array for get()从 get() 的一维数组中查找矩阵大小
【发布时间】:2020-02-19 04:34:54
【问题描述】:

我有一个形状像 S 且大小至少为 5*5 的矩阵。它通过将第一行、中间行、最后一行以及最后一列和最后一列的数字放在一维数组中来表示。

例如,下面的矩阵:

1  2  3  4  5
6  0  0  0  0
7  8  9  10 11 
0  0  0  0  12
13 14 15 16 17

将在这个数组中表示:

[1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,6,12]

重点是我想编写一个 get(i,j) 函数,它从一维数组中获取正确的数字,例如 get(1,0) 会给我 6。为此我需要知道矩阵大小。但是我找不到从一维数组中获取它的方法。

任何帮助将不胜感激。

【问题讨论】:

    标签: arrays algorithm matrix


    【解决方案1】:

    我们可以根据坐标来判断我们有什么情况:

    if(i == 0) //first row
        return array[j];
    else if(i == (size - 1) / 2) //middle row
        return array[size + j];
    else if(i == size - 1) //last row
        return array[2 * size + j];
    else if(j == 0 && i < (size - 1) / 2) //first column
        return array[3 * size + i - 1);
    else if(j == size - 1 && i > (size - 1) / 2) //last column
        return array[3 * size + (size - 3) / 2 + i - (size - 1) / 2];
    else
        return 0;
    

    【讨论】:

    • 这就是我设法做的部分,但问题是我不知道大小,我必须从一维数组中找到它。
    • 哦,对不起。错过了那部分。我们得到array length = 3 * size + 2 * (size - 3)/2。求解size 得到size = (3 + array length) / 4
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2021-12-25
    • 2017-03-09
    相关资源
    最近更新 更多