在数组中查找数字【数组】

在数组中查找数字【数组】

时间: 1ms        内存:128M

描述:

给定整型数组B[0..m,0..n] 。已知B中数据在每一维方向上都按从小到大的次序排列,且整型变量xB中存在。试设计一个程序段找出一对满足B[i,j]=x(i,j)值,要求比较次数不超过m+n.

输入:

数组长,宽

数组各元素的值

变量x

输出:

输出所有的i,j对

示例输入:

5 4
1 2 3 4
5 6 7 8 
9 10 11 12
13 14 15 16
17 18 19 20
1

示例输出:

1 1

提示:

参考答案(内存最优[752]):

#include<stdio.h>
 int main()
 {
 	int m,n,i,j,a[100][100],x;
 	scanf("%d%d",&m,&n);
 	for(i=0;i<m;i++)
 		for(j=0;j<n;j++)
 			scanf("%d",&a[i][j]);
 	scanf("%d",&x);
 	for(i=0;i<m;i++)
 	{
 		if(a[i][0]<=x)
 		{
 			for(j=0;j<n;j++)
 				if(a[i][j]==x)
 				{
 					printf("%d %d\n",i+1,j+1);
 				}
 		}
 	}
 	return 0;
 }

参考答案(时间最优[0]):

#include<stdio.h>
 int main()
 {
 	int m,n,i,j,a[100][100],x;
 	scanf("%d%d",&m,&n);
 	for(i=0;i<m;i++)
 		for(j=0;j<n;j++)
 			scanf("%d",&a[i][j]);
 	scanf("%d",&x);
 	for(i=0;i<m;i++)
 	{
 		if(a[i][0]<=x)
 		{
 			for(j=0;j<n;j++)
 				if(a[i][j]==x)
 				{
 					printf("%d %d\n",i+1,j+1);
 				}
 		}
 	}
 	return 0;
 }

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注