赞
踩
题目描述:
从一个N*M(N<=M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。
输入描述:
输入矩阵要求:1<=K<=N<=M<=150
输入格式:N M K
N*M矩阵
输出描述:
N*M的矩阵中可以选出M!/N!种组合数组,每个组合数组中第K大的数中的最小值。无需考虑重复数字,直接取字典排序结果即可。
补充说明:注意:结果是第K大的数字的最小值
示例1
输入:3 4 2
1 5 6 6
8 3 4 3
6 8 6 3
输出:3
说明:N*M的矩阵中可以选出M!/N!种组合数组,每个组合数组中第K大的数中的最小值;上述输入中选出的数组组合为1,3,6; 1,3,3; 1,4,8; 1,4,3;......上述输入样例中选出的组合数组有24种,最小数组为1,3,3,则2大的最小值为3
解题思路:考察对二分查找、DFS搜索的理解和运用。
C++解法:
- #include <iostream>
- #include <vector>
- #include <a
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。