https://leetcode-cn.com/problems/find-the-kth-smallest-sum-of-a-matrix-with-sorted-rows/submissions/
枚举,中途记录前k个最小和,遍历每行,把当前行的元素都加到上一行的前k个最小和,然后排序取前k个最小和。
这关键的核心是,可以按行拆分,本行的k个最小和肯定来自上一行的k个最小和,因为如果大于k个,加出来的数字也比第k个大。
class Solution {
public:
int kthSmallest(vector<vector<int>>& mat, int k) {
int n=mat.size();
int m=mat[0].size();
vector<int> sum;
sum.push_back(0);
for(int i=0;i<n;i++){
vector<int> new_sum;
for(int j=0;j<m;j++){
for(int k=0;k<sum.size();k++){
new_sum.push_back(sum[k]+mat[i][j]);
}
}
sort(new_sum.begin(),new_sum.end());
sum.clear();
for(int j=0;j<k && j<new_sum.size();j++){
sum.push_back(new_sum[j]);
}
}
return sum[k-1];
}
};