关闭

面试题3:二维数组中的查找

255人阅读 评论(0) 收藏 举报
分类:

题目:在二维数组中,每行、每列的数字递增,判断一个数字是否存在

分析:从二维数组的右上角开始查找,若找到,则停止;若比该数字大,则放弃该列;若比该数字小,则放弃该行。

代码如下:

// 面试题3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define MAXN 100

bool Find(int* matrix,int n,int m,int number)
{
	bool found = false;
	if(matrix != NULL && n > 0 && m > 0)
	{
		int row = 0;
		int column = m-1;
		
		while(row < n && column >= 0)
		{
			if(matrix[row*m + column] == number)
			{
				found = true;
				break;
			}
			else if(matrix[row*m + column] > number)
			{
				column--;
			}
			else
			{
				row++;
			}
		}
	}
	return found;
}

int main(int argc, char* argv[])
{
	int matrix[4][4]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};
	int n,m,i,j,number;

	while(scanf("%d%d",&n,&m)!=EOF){
		scanf("%d",&number);
	bool found = Find((int*)matrix,n,m,number);
	printf("%d\n",found);
	}
	return 0;

}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:95597次
    • 积分:2444
    • 等级:
    • 排名:第15119名
    • 原创:156篇
    • 转载:25篇
    • 译文:0篇
    • 评论:2条
    最新评论
  • nefu493负载平衡问题

    freeboy1015: 还是没有太理解你的模型,有两个问题:1.如何把最大流和最小费用联系起来的?2.为什么达到最大流的时候...

  • 驱动程序过程

    karen_mo: 补充一下,在测试程序时, mknod /dev/设备名 c(char) 100(主设备号) 0(从设...