查找之杨氏矩阵

来源:互联网 发布:windows上安装apache 编辑:程序博客网 时间:2024/04/30 07:55

这个也是笔试或者面试过程中经常遇到的一个问题,利用二分查找的思想,巧妙的查找目标元素,网上资料也比较多,自己只是做一个收藏,贴一个code

/*杨氏矩阵查找*/#include <iostream>using namespace std;//二维数组的使用是一个问题void fun(int array[][100],int n,int m,int key,        int &i,int &j){    i=0,j=m-1;  //  int temp = array[i][j];    while(key != array[i][j]&&          (i+j) !=0 && (i+j)!=(m+n)  && i>=0 && i<=n  && j>=0 && j<=m )    {        if(array[i][j] < key)                i++;        if(array[i][j] > key)                j--;    }}int main(){    int array[100][100];    int n,m;    while(cin >>n >> m            &&(n+m) != 0)    {        for(int i=0;i<n;++i)            for(int j=0;j<m;++j)                cin >> array[i][j];        int i=0,j=0;        int key=0;        cin >> key;        fun(array,n,m,key,i,j);        if(array[i][j] != key)//处理回到顶点,元素不存在的情况            cout << "no this number" <<endl;        else            cout << "the localion of this number is " \            << i+1 <<" " <<j+1 << endl;    }}

原创粉丝点击