内存:128  时间:1

题目描述

给定整型数组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

提示

X在B中也许并不只一个,多组数据按行优先策略

代码如下

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

代码来源于互联网,仅供参考!