本文主要是介绍5540: 【J1】【vector】二维数组排序查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个动态二维数组a(每个一维数组的长度相同),按要求排序:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入
第一行三个整数,n,m,k,n和m表示二维数组的大小,k表示要查找的数。(0<n,m<1000)
第2到第n+1行每行m个数。
输出
第一部分,排完序的数组,共n行m列,数字之间用空格隔开。
第二部分一行,能找到k则输出从左往右从上到下第一个k的位置,找不到输出-1。
样例输入
3 3 5 2 4 6 1 5 7 7 9 8
样例输出
2 4 6 1 5 7 7 8 9 2 2
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){vector<vector<int> >v;int n,m,a,k,f=0,x,y;cin>>n>>m>>k;for(int i=0;i<n;i++){vector<int>t;for(int j=0;j<m;j++){cin>>a;t.push_back(a);}v.push_back(t);} for(int i=0;i<n;i++){sort(v[i].begin(),v[i].end());int yy=find(v[i].begin(),v[i].end(),k)-v[i].begin();if(yy!=v[i].size()){if(f==0){x=i;y=yy;}f=1;}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){cout<<v[i][j]<<" ";}cout<<endl;}if(f){cout<<x+1<<" "<<y+1;}else{cout<<-1;}return 0;
}
这篇关于5540: 【J1】【vector】二维数组排序查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!