Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件夹中的文件存储在_nXm_u矩阵中,其中n表示行数,m表示列数_Java_Multidimensional Array - Fatal编程技术网

Java 文件夹中的文件存储在_nXm_u矩阵中,其中n表示行数,m表示列数

Java 文件夹中的文件存储在_nXm_u矩阵中,其中n表示行数,m表示列数,java,multidimensional-array,Java,Multidimensional Array,在一次采访中,有人问我这个2D矩阵问题,但我无法思考逻辑。 请帮我讲逻辑 文件夹中的文件存储在nXm矩阵中,其中n给出 行数,m表示列数。编号 系统从(1,1)开始 有一个强大的病毒在其中一个文件和文件的位置 文件由(r,c)给出 病毒在一秒钟内传播到相邻的区块。从每一个受感染的 块,它需要另一秒钟才能扩展到其相邻的块。及 等等 例如,如果病毒位于(1,1),则需要一秒钟才能传播到 块(1,2)、(2,1)和(2,2)。两秒钟后,病毒感染了 区块为(1,1)、(1,2)、(2,1)、(2,2)、

在一次采访中,有人问我这个2D矩阵问题,但我无法思考逻辑。 请帮我讲逻辑

文件夹中的文件存储在nXm矩阵中,其中n给出 行数,m表示列数。编号 系统从(1,1)开始

有一个强大的病毒在其中一个文件和文件的位置 文件由(r,c)给出

病毒在一秒钟内传播到相邻的区块。从每一个受感染的 块,它需要另一秒钟才能扩展到其相邻的块。及 等等

例如,如果病毒位于(1,1),则需要一秒钟才能传播到 块(1,2)、(2,1)和(2,2)。两秒钟后,病毒感染了 区块为(1,1)、(1,2)、(2,1)、(2,2)、(1,3)、(2,3)、(3,3)、(3,2), (3,1)

等等

因此,给定n,m和(r,c)的值,求出它的秒数 将在整个文件夹中传播

输入格式

输入包括:

第一行包含t个测试用例

每个测试用例包含两行:

第一行包含由空格分隔的n和m。下一行 测试用例包含给出病毒位置的(r,c) 文件夹中受感染的文件。输出格式

输出包含t行,每行都包含所需的时间 病毒将在几分钟和几秒钟内传播到整个文件夹。注 如果所用时间少于一分钟,则输出应为x 秒。如果时间为1秒,则输出应为1秒。如果 时间为1分钟,则时间应输出为1分钟0 秒。请参阅测试用例以了解更多信息

样本输入

三,

6.5

(2,2)

100 50

(39,5)

44 130

(1,1)

样本输出

4秒

1分1秒

2分钟

9秒

解释

对于第一个测试用例,有6行5列。病毒正在传播 在位置(2,2)处,扩散到(1,1)、(1,2)需要1秒, (1,3), (2,1), (2,3), (3,1), (3,2), (3,3). 从那里开始需要1分钟 更多的时间传播到相邻文件。要传播到所有文件, 总共需要4秒钟


只是一个想法(需要证明)

然后答案将是
Math.max(n-r,m-c)

测试用例:

  • 数学最大值(6-2,5-2)==4秒
  • 数学最大值(100-39,50-5)==61秒==1分1秒
  • 数学最大值(44-1130-1)==129秒==2分9秒 说明:

    让我们简化一下,假设我们只有一行[1;100],病毒从1开始传播,然后在99秒内所有细胞都会受到感染

    如果病毒从50开始,那么在50秒内感染就会完成


    因此,我们有以下公式
    rowSize-(startPos*2)+startPos rowSize-startPos
    只是一个想法(需要证明)

    然后答案将是
    Math.max(n-r,m-c)

    测试用例:

  • 数学最大值(6-2,5-2)==4秒
  • 数学最大值(100-39,50-5)==61秒==1分1秒
  • 数学最大值(44-1130-1)==129秒==2分9秒 说明:

    让我们简化一下,假设我们只有一行[1;100],病毒从1开始传播,然后在99秒内所有细胞都会受到感染

    如果病毒从50开始,那么在50秒内感染就会完成


    因此,我们有以下公式
    rowSize-(startPos*2)+startPos rowSize-startPos
    您应该创建一个布尔值的二维数组(m,n),将所有内容初始化为false。例如,
    true
    表示感染,
    false
    表示未感染

    另外,首先在(r,c)处使
    true
    成为第一个受感染的细胞

    然后启动一个循环,条件是“当仍有未感染的细胞(false)”时

    在这个循环中,对表中的所有单元格进行循环:对于每个感染的
    单元格,您应该找到相邻的未感染(假)单元格(上、右、左、下)-如果它们存在,并将它们保存在列表中

    当所有的细胞都被感染时,大循环就会结束。对于循环中的每个迭代,向
    seconds
    变量添加1。最后的
    seconds
    变量将是整个文件夹完全感染所需的秒数

    下面是一些伪代码:

    table initialization (m,n)
    set first infected cell (c,r)
    number of seconds = 0
    while (not all cells infected) {
        reset the infectionExtensionList
        for (i: columns) {
            for (j: rows) {
                if (i,j is infected) {
                    append to the infectionExtensionList: (i+1,j), (i-1,j), (i,j+1), (i,j-1) // if they exist!
                }
            }
        }
        turn all the cells of the infectionExtensionList to infected
        number of seconds ++
    }
    return number of seconds
    

    祝你好运

    您应该创建一个布尔值的二维数组(m,n),将所有内容初始化为false。例如,
    true
    表示感染,
    false
    表示未感染

    另外,首先在(r,c)处使
    true
    成为第一个受感染的细胞

    然后启动一个循环,条件是“当仍有未感染的细胞(false)”时

    在这个循环中,对表中的所有单元格进行循环:对于每个感染的
    单元格,您应该找到相邻的未感染(假)单元格(上、右、左、下)-如果它们存在,并将它们保存在列表中

    当所有的细胞都被感染时,大循环就会结束。对于循环中的每个迭代,向
    seconds
    变量添加1。最后的
    seconds
    变量将是整个文件夹完全感染所需的秒数

    下面是一些伪代码:

    table initialization (m,n)
    set first infected cell (c,r)
    number of seconds = 0
    while (not all cells infected) {
        reset the infectionExtensionList
        for (i: columns) {
            for (j: rows) {
                if (i,j is infected) {
                    append to the infectionExtensionList: (i+1,j), (i-1,j), (i,j+1), (i,j-1) // if they exist!
                }
            }
        }
        turn all the cells of the infectionExtensionList to infected
        number of seconds ++
    }
    return number of seconds
    

    祝你好运

    这不适用于矩阵中的4,2病毒位置。这不适用于矩阵中的4,2病毒位置。