![]() |
1
1
我想你只能做一个水平切割或垂直切割。 一种方法 “一个矩阵” 是:(你需要重复地把这个应用到你得到的每个分区上)。 计算每行中的个数和每列中的个数,将它们存储在两个数组中,如
还要计算矩阵中1的总数,实际上是上述任意一个数组中所有元素的值之和。
例如,您可以像
现在考虑这样的水平切割: 0,0,0,0,0 0,0,1,0,0 0,0,0,1,0 0,0,0,0,0
您在每个分区中获得的数量是:
为此: 0,0,0,0,0 0,0,1,0,0 0,0,0,1,0 0,0,0,0,0
它是:
为此: 0,0,0,0,0 0,0,1,0,0 0,0,0,1,0 0,0,0,0,0
它是:
所以你只需要考虑所有的行切割和列切割,并考虑哪一个切割将导致两个相等的分区。
然后,对于从这样一个分区得到的每个矩阵,您可以递归地重复这个过程,直到您不能剪切,即数组中只有一个元素。 在每次递归中,都要维护一个计数变量并更新它。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |