《剑指offer》面试题3(2)

来源:互联网 发布:意大利工业知乎 编辑:程序博客网 时间:2024/05/16 08:10
#include <iostream>#include <cstdio>using namespace std;const int maxn = 100;int a[maxn*maxn],n,m;bool isInArray(int* matrix, int rows, int columns, int number);int main(){    while(true)    {        scanf("%d %d",&n,&m);        for(int i=0;i<n;i++)        {            for(int j=0;j<m;j++)            {                scanf("%d",&a[i*m+j]);            }        }        int number,data;        scanf("%d",&number);        for(int i=0;i<number;i++)        {            scanf("%d",&data);            cout<<(isInArray(a,n,m,data)?"Yes":"No")<<endl;        }    }    return 0;}bool isInArray(int* matrix, int rows, int columns,int number){    if(matrix == NULL || rows<=0 || columns<=0) return false;//排除非法数据    int row = 0;    int column = columns-1;    while(row<rows && column>=0)    {        if(matrix[row*columns+column] == number)       //找到number            return true;        else if(matrix[row*columns+column] < number)    //右上角的元素小于number,删除最上面的一行            row++;        else                                    //右上角的元素大于number,删除最右面的一列            column--;    }    return false;}

0 0
原创粉丝点击