剑指offer 面试题三 二维数组中的查找

#include<iostream>
using namespace std;

int a[100][100];
int key;
int n , m;

int DFS( int i , int j , int value , int &ivalue , int &jvalue )
{
    if( i >= n || j >= m )
        return false;
    if( a[i][j] > value )
        return false;
    else if( a[i][j] == value )
    {
        ivalue = i , jvalue = j;
        return true;
    }
    else
    {
        int res = DFS( i+1 , j , value , ivalue , jvalue );
        if( !res )
            res = DFS( i , j + 1 , value , ivalue , jvalue );
        return res;
    }
}

int find( int value , int &i , int &j)
{
    return DFS(  0 , 0 , value , i , j );
}

int main()
{
    freopen("in.txt","r",stdin);
    int i,j;
    while( ~scanf("%d%d%d" , &n , &m , &key) )
    {
        for( i = 0 ; i < n ; i++ )
            for( j = 0 ; j < m ; j++ )
                cin >> a[i][j];
        int ivalue , jvalue , res ;
        res = find( key , ivalue , jvalue );
        cout << "find the "<< key << " is " << res << endl;
        if( res && a[ivalue][jvalue] == key )
            cout << "the i j : " << ivalue+1 << " , " << jvalue+1 << endl;
    }
    return 0;
}

 

posted @ 2015-05-13 22:19  crazyzhping  阅读(125)  评论(0)    收藏  举报