论坛首页 综合技术论坛

一个变态面试题

浏览 4958 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-06-02  

 

 

有一个矩阵,矩阵中的数,从左到右,依次变大,无规律,从上到下依次变大,无规律,已知四个临界点的值,求一个数在矩阵中的可能位置.  如16的可能位置,(1,2)(1,3)..

 

注:我写的这个矩阵,第一行可能不对.条件是假设是一个符合条件的矩阵.

横轴x 竖轴y

1 2 4 6 7 9 13 143
2 4 6
5 6 7
7 10 11
9 12 13
14 16 17
16 17 18
17 19 20
   发表时间:2012-06-04  
这是为了考察什么?
0 请登录后投票
   发表时间:2012-06-04  
应该是考察,数据结构-矩阵.
0 请登录后投票
   发表时间:2012-06-06  
这个简单来说大致是这样(个人理解)
给出的4 个点:
A... ... B
... ...
C... ... D

以及需要查找的数F
有以下两种极限可能
A . F ... B
F .. ...
C ... ... D
和:
A ... ... B
  ... ..F
C ... .F. D
也就是说明这个需要查找的数的极限值主要是靠近A 和靠近D点。
确定这个就行了。
这样就能确定F点可能存在的区间段了。
这个还有一个条件就是
“从左到右,依次变大”和“从上到下依次变大” 要变大的话就必须是有数据的,所以最小的变化值是1。
都说到这了。也该知道了
0 请登录后投票
   发表时间:2012-06-30  

假设矩阵为
a......b
........
....e...
........
c......d
a,b,c,d为边界,e为给定的数,坐标为(x,y),每次增加为1

	public static void main(String[] args){
		search(2,10,10,20,6);
	}
	
	
	static void search(int a, int b, int c, int d, int self) {
		for (int x = 1; x <= b - a + 1; x++) {
			for (int y = 1; y <= d - c + 1; y++) {
				if (x + y + a -2 == self) {
					System.out.println("a:" + a + " b:" + b + " c:" + c + " d:"
							+ d + " x:" + x + " y:" + y);
				} else {
					continue;
				}
			}
		}
	}
 
0 请登录后投票
   发表时间:2012-06-30  
不知道你看清楚意思没,不过你这个代码少计算了多少都不知道。。。
zuoshu 写道

假设矩阵为
a......b
........
....e...
........
c......d
a,b,c,d为边界,e为给定的数,坐标为(x,y),每次增加为1

	public static void main(String[] args){
		search(2,10,10,20,6);
	}
	
	
	static void search(int a, int b, int c, int d, int self) {
		for (int x = 1; x <= b - a + 1; x++) {
			for (int y = 1; y <= d - c + 1; y++) {
				if (x + y + a -2 == self) {
					System.out.println("a:" + a + " b:" + b + " c:" + c + " d:"
							+ d + " x:" + x + " y:" + y);
				} else {
					continue;
				}
			}
		}
	}
 

 

0 请登录后投票
   发表时间:2012-06-30  

哦,需要改一下

if (x + y + a -2 == self) 
改为
if (x + y + a -2 <= self)
cttnbcj 写道
不知道你看清楚意思没,不过你这个代码少计算了多少都不知道。。。
zuoshu 写道

假设矩阵为
a......b
........
....e...
........
c......d
a,b,c,d为边界,e为给定的数,坐标为(x,y),每次增加为1

	public static void main(String[] args){
		search(2,10,10,20,6);
	}
	
	
	static void search(int a, int b, int c, int d, int self) {
		for (int x = 1; x <= b - a + 1; x++) {
			for (int y = 1; y <= d - c + 1; y++) {
				if (x + y + a -2 == self) {
					System.out.println("a:" + a + " b:" + b + " c:" + c + " d:"
							+ d + " x:" + x + " y:" + y);
				} else {
					continue;
				}
			}
		}
	}
 

 

 

0 请登录后投票
   发表时间:2012-07-04  
啥叫“四个临界点”,临什么界的点?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics