早教吧作业答案频道 -->数学-->
关于带权皇后矩阵一个问题的求解,求一个高效的算法就是n行n列的矩阵,从中选n个数,要求这n个数都不同行不同列,并使这n个数中的最大值最小.如下面的3*3矩阵:123456789如果选择159,那
题目详情
关于带权皇后矩阵一个问题的求解,求一个高效的算法
就是n行n列的矩阵,从中选n个数,要求这n个数都不同行不同列,并使这n个数中的最大值最小.
如下面的3*3矩阵:
1 2 3
4 5 6
7 8 9
如果选择 1 5 9,那么这个最大数值就是9
如果选择 7 2 6,那么这个最大数值就是7
.
.
.
.
有很多中选择,找出一个选择,使它们中的最大值最小.
要求时间复杂度小.所以不能用全排列来一一比较!
想找一个比较好的算法!
就是n行n列的矩阵,从中选n个数,要求这n个数都不同行不同列,并使这n个数中的最大值最小.
如下面的3*3矩阵:
1 2 3
4 5 6
7 8 9
如果选择 1 5 9,那么这个最大数值就是9
如果选择 7 2 6,那么这个最大数值就是7
.
.
.
.
有很多中选择,找出一个选择,使它们中的最大值最小.
要求时间复杂度小.所以不能用全排列来一一比较!
想找一个比较好的算法!
▼优质解答
答案和解析
这个其实应该叫"带权车"问题了吧?斜线没有限制呢.
是这样,由于只是横竖方向上不能冲突,所以一个可行解经过"行间"调换之后,仍然是一个可行解.
那么利用这一点,就可以进行贪心.
先将所有数字排序,然后每一行的数字也进行排序.排序的时候不是原地的,而是新开两个表.同时记录下每个数字对应的行列.
接下来先生成一个任意解,比如(1,1)(2,2)...(n,n).
然后,从大到小扫描对全部数字排序的数组.每次扫描到数字K,就先判断K是否在解之中(可以使用二维hash判断),然后尝试优化这个解.
优化的方式是,挨个的找数字K在它那行上的下一个比它小的数字P,然后尝试交换P所在列上冲突的那个数字,交换到K那行上去,看看会不会超过K.不会则交换,然后重新找K.否则继续找P
直到某一次找P失败,则解已经最优.
对于你的例子.
一开始的解集是{1,5,9}
第一大的数字是9,优化9.这行第二小是8.交换5-6.9-8,因为6
是这样,由于只是横竖方向上不能冲突,所以一个可行解经过"行间"调换之后,仍然是一个可行解.
那么利用这一点,就可以进行贪心.
先将所有数字排序,然后每一行的数字也进行排序.排序的时候不是原地的,而是新开两个表.同时记录下每个数字对应的行列.
接下来先生成一个任意解,比如(1,1)(2,2)...(n,n).
然后,从大到小扫描对全部数字排序的数组.每次扫描到数字K,就先判断K是否在解之中(可以使用二维hash判断),然后尝试优化这个解.
优化的方式是,挨个的找数字K在它那行上的下一个比它小的数字P,然后尝试交换P所在列上冲突的那个数字,交换到K那行上去,看看会不会超过K.不会则交换,然后重新找K.否则继续找P
直到某一次找P失败,则解已经最优.
对于你的例子.
一开始的解集是{1,5,9}
第一大的数字是9,优化9.这行第二小是8.交换5-6.9-8,因为6
 看了 关于带权皇后矩阵一个问题的求...的网友还看了以下:
以权值分别为4,3,2,1的四个叶子结点构成的哈夫曼树,其带权路径长度WPL是__,4个权值对应的 2020-05-16 …
由权值分别为3,8,6,2,5的叶子节点生成一棵哈夫曼树,它的带权路径长度为A.24B.48C.72 2020-05-24 …
由权值为5,9,2,6的4个叶子构造一棵哈夫曼树,该树的带权路径长度为(59)。A.21B.22C. 2020-05-26 …
由权值分别为3,8,6,2,5的叶子节点生成一棵哈夫曼树,它的带权路径长度为A.24B.48C.7 2020-06-04 …
````语文题````1.带有手的成语.形容劳苦()留情不做绝()2.带有龙的成语.吟咏嘹亮()地 2020-06-16 …
知道权值,如何求哈夫曼树的编码长度,带权路径长度?权值分别为3,8,6,2,5的叶子节点生成一棵哈 2020-06-17 …
数据结构由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(B)A24 2020-06-17 …
一带有绝缘座的空心金属球壳A带有4*10的-8库的正电荷,有绝缘柄的金属小球B带2*10的-8库的 2020-06-18 …
一带有绝缘座的空心金属球壳A带有4*10的-8库的正电荷,有绝缘柄的金属小球B带2*10的-8库的 2020-07-11 …
有16位教授,有人带1名研究生,有人带两名研究生,有人带三名,共带27名,带一名的与带2.3名的教授 2020-11-05 …