[Twitter] Given a matrix with all elements sorted on each individual row and column find

来源:互联网 发布:丹江口水电站待遇 知乎 编辑:程序博客网 时间:2024/05/29 15:15
每次找到每行要比较的最小的列。
逐行比较

#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int k_thsmall(vector<vector<int> > a, int k)
{
    int n=a.size();
    int m=a[0].size();
    vector<int> minCol(n, 0);
    minCol[0]=1;
    int tmin=a[0][0];
    int r;
    for(int j=1; j<k; ++j)
    {
        tmin=INT_MAX;
        for(int i=0; i<n; ++i)
        {
            if(minCol[i]<m)
            {
                if(a[i][minCol[i]]<tmin)
                {
                    tmin=a[i][minCol[i]];
                    r=i;
                }
            }
        }
        minCol[r]++;
    }
    return tmin;
}
int main()
{
    int a1[]={1,3,4,6,8};
    int a2[]={2,9,10,12,17};
    int a3[]={5,11,14,15,19};
    int a4[]={7,13,16,18,20};
    vector<vector<int> > vecs;
    vector<int> vec1(a1,a1+5);
    vector<int> vec2(a2,a2+5);
    vector<int> vec3(a3,a3+5);
    vector<int> vec4(a4,a4+5);
        vecs.push_back(vec1);
        vecs.push_back(vec2);
        vecs.push_back(vec3);
        vecs.push_back(vec4);
   cout<<k_thsmall(vecs, 20)<<endl;
}
0 0
原创粉丝点击