题目:在一个二维数组中,每一行都按照从左到右递增,每一列都按照从上到下递增的顺序排列。
输入一个这样的数组和一个整数,判断数组中是否有这个数。</span></strong>
/*
* 剑指offer 面试题03
* Ajax
* 2014-7-22
*/
#include<stdio.h>
#include <unistd.h>
typedef int bool;
#define FALSE 0
#define TRUE 1
bool Find(int * matrix, int rows,int columns,int number);
int main(void)
{
bool result;
int array[4][4]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};
result = Find(array, 4, 4, 7);
if(result)puts("true!");
else puts("false");return 0;
}
bool Find(int * matrix, int rows,int columns,int number)
{
bool found = FALSE;
if(matrix != NULL && rows > 0 && columns > 0)
{
int row = 0;int column = columns - 1 ;
while(row < rows && column >= 0)
{
if(matrix[row*columns +column] == number)
{
found = TRUE;
break;
}
else if (matrix[row*columns +column] > number)
{
printf("删除第%d列\n", column);
-- column;
sleep(1);
}
else
{
printf("删除第%d行\n", row);
++ row ;
sleep(1);
}
}
}
return found;
}
结果如下:
删除第3列
删除第2列
删除第0行
删除第1行
true!