这是该挑战的二维概括。
出于我们的目的,如果可以通过从B完全删除许多行和列来获得A,则一个矩阵(或2D数组)A被视为另一个矩阵B的子矩阵。(注意:某些来源有不同/限制性更强的定义。)
这是一个例子:
A = [1 4 B = [1 2 3 4 5 6
2 1] 6 5 4 3 2 1
2 1 2 1 2 1
9 1 8 2 7 6]
我们可以从B删除第2、3、5、6和第2、4行以获得A:
B = [1 2 3 4 5 6 [1 _ _ 4 _ _ [1 4 = A
6 5 4 3 2 1 --> _ _ _ _ _ _ --> 2 1]
2 1 2 1 2 1 2 _ _ 1 _ _
9 1 8 2 7 6] _ _ _ _ _ _]
需要注意的是甲仍然是一个子矩阵乙如果所有行或所有列乙被保留(或者实际上,如果A = B)。
挑战
你猜到了。给定两个非空整数矩阵A和B,确定A是否为B的子矩阵。
您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。
输入可以采用任何方便的格式。可以将矩阵指定为嵌套列表,使用两个不同分隔符的字符串,平面列表以及矩阵的尺寸等,只要输入未经过预处理即可。只要您的选择保持一致,就可以选择B优先,A优先。您可以假设矩阵的元素为正且小于256。
如果A是B的子矩阵,则输出应为真,否则为f。特定的输出值不必保持一致。
适用标准代码高尔夫球规则。
测试用例
每个测试用例位于单独的行上A, B
。
真实案例:
[[1]], [[1]]
[[149, 221]], [[177, 149, 44, 221]]
[[1, 1, 2], [1, 2, 2]], [[1, 1, 1, 2, 2, 2], [3, 1, 3, 2, 3, 2], [1, 1, 2, 2, 2, 2]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 7, 6], [7, 8, 9], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[228, 66], [58, 228]], [[228, 66], [58, 228]]
[[1, 2], [2, 1]], [[1, 2, 2], [2, 1, 2], [2, 2, 1]]
[[136, 196], [252, 136]], [[136, 252, 210, 196, 79, 222], [222, 79, 196, 210, 252, 136], [252, 136, 252, 136, 252, 136], [180, 136, 56, 252, 158, 222]]
虚假案例:
[[1]], [[2]]
[[224, 15]], [[144, 15, 12, 224]]
[[41], [150]], [[20, 41, 197, 150]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [7, 8, 9], [4, 5, 6]]
[[1, 2, 2], [2, 1, 2], [2, 2, 1]], [[1, 2], [2, 1]]
[[1, 2, 2], [2, 1, 2]], [[1, 2], [2, 1], [2, 2]]
[[1, 2], [3, 4]], [[5, 3, 4, 5], [2, 5, 5, 1], [4, 5, 5, 3], [5, 1, 2, 5]]
[[158, 112], [211, 211]], [[158, 211, 189, 112, 73, 8], [8, 73, 112, 189, 211, 158], [211, 158, 211, 158, 211, 158], [21, 158, 199, 211, 212, 8]]