`
TenAclock
  • 浏览: 9809 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Java 矩阵中查找定值

阅读更多

引子:http://www.iteye.com/topic/1118928

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 
例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。 

 


解法:
package com.anct.iteye;

public class Question {

	static int seed = 0;
	public static void main(String[] args) {
		int[][] data = getData();
		print(data);
//		setSeed(data);
		seed = 99;
		System.out.println("seed=" + seed);
		boolean exist = exist(data,0,data.length-1,seed);
		System.out.println(exist);
	}
	
	
	//用递归来做
	public static boolean exist(int[][] array,int len1 ,int len2, int aim){
		//从右上角开始做,>aim 去除一列 <aim 去除一行 =aim 返回真
		//int row=0,col=0;
		
		if(len1 >=array.length || len2 <0 ){
			return false;
		}
		if(aim < array[len1][len2]){
			len2=len2-1;
			//flag = exist(array,len1,len2,aim);
		}else if(aim > array[len1][len2]){
			len1 = len1 +1;
		}else{
			return true;
		}
		return  exist(array,len1,len2,aim);
		
		
		//return flag;
	}
	
	public static void setSeed(int[][] array){
		int i = (int) (Math.random()*array.length);
		int j = (int) (Math.random()*array.length);
		seed = array[i][j];
	}
	
	/**
	 * 打印数据
	 * @param array
	 */
	public static  void print(int[][] array){
		for(int i=0; i<array.length; i ++){
			for(int j =0; j<array[i].length;j++){
				if(j == array[i].length-1){
					System.out.print(array[i][j]);
				}else{
					System.out.print(array[i][j] + "\t");
				}
			}
			System.out.println();
		}
	}
	//第一步先获取数据
	public static int[][] getData(){
		//随机生成一个长度
		int length = (int) (Math.random()*4 +3);
		//这里只对方阵有效的算法,因此自作方阵的数据
		int[][] array = new int[length][length];
		for(int i = 0;i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				int temp = (int) (Math.random()*7 +1);
				//第一行的数据全部的随机生成,但是要保证一个比一个大
				if(i == 0){
					//这一行的第一个数据,也是所有的第一个
					if(j == 0){
						array[i][j] = temp;
					}else{//处理不是开头的数据
						array[i][j] = array[i][j-1] + temp;
					}
				}else{//第一行的数据生成完成,下面的数据要参考第一行的数据来生成
					//这一行的第一个数据参考上一行的第一个数据来生成
					if(j == 0){
						array[i][j] = array[i-1][j] + temp;
					}else{//不是第一个的话就要参考上一个和前一个数据来生成
						array[i][j] = Math.max(array[i][j-1], array[i-1][j]) + temp; 
					}
				}
				
			}
		}
		return array;
	}

}
 
0
0
分享到:
评论

相关推荐

    [Java算法-排序练习]有序矩阵查找.java

    文档中涵盖了有序矩阵查找的基本概念,包括如何在有序矩阵中查找元素以及如何在Java中实现有序矩阵查找。此外,文档还包括一个逐步指南,介绍了如何在Java中实现有序矩阵查找,包括详细的代码示例和实现细节。 文档...

    java矩阵找鞍点

    在Java中,处理矩阵可以通过创建二维数组实现。本话题聚焦于寻找矩阵中的“鞍点”,一个鞍点是指该元素在它所在的行中是最小的,同时在它所在的列中是最大的。这个概念在矩阵分析和某些算法中具有重要意义。 鞍点的...

    图的邻接矩阵实现及广度优先搜索(JAVA)

    在Java中,我们可以通过多种方式来表示图,其中一种常见的方法就是使用邻接矩阵。本文将深入探讨如何使用Java实现图的邻接矩阵以及如何在该数据结构上执行广度优先搜索(BFS)。 **邻接矩阵** 邻接矩阵是一种二维...

    java 快速排序 折半查找的界面实现 (递归与分治法)

    总的来说,快速排序和折半查找是计算机科学中不可或缺的算法,通过递归和分治策略,可以在Java中高效地实现这些算法,并结合界面设计,为用户提供直观的交互体验。在实际项目中,理解和掌握这些算法有助于优化数据...

    Java集合类矩阵图

    Java集合类矩阵图是Java编程中非常重要的一个概念,它主要涵盖了Java集合框架中的各种接口、类以及它们之间的关系。这个矩阵图可以帮助开发者更清晰地理解Java集合框架的层次结构和实现方式。在这个矩阵图中,你可以...

    java数据结构课程设计稀疏矩阵

    3. **Triple.java**:这是三元组类,用于封装稀疏矩阵中的每个元素(行索引、列索引和值)。类中可能包含属性如row,column和value,以及相关的getter和setter方法。 4. **Test.java**:测试文件,用于验证稀疏矩阵...

    java RMI分布式计算(两矩阵相乘)源码

    5. **客户端代码**:客户端通过`java.rmi.Naming.lookup()`方法查找并获取服务器端的远程对象实例,然后调用其上的矩阵相乘方法。 6. **并发与并行计算**:在分布式计算中,通常会将大矩阵拆分成小块,分配给多个...

    用于查找矩阵行列式的 Java 程序.docx

    在 Java 编程中,矩阵行列式是一种重要的数学概念,特别是在处理线性代数问题时。行列式只能被定义在方阵上,也就是行数和列数相等的矩阵。这个值可以帮助我们判断线性方程组的解的存在性和唯一性,同时也用于计算...

    GetMatrix_java.rar_GetMatrix_java_可达矩阵_计算可达矩阵

    在JAVA编程中,我们可以使用二维数组来表示这个矩阵。 计算可达矩阵通常有两种主要方法:深度优先搜索(DFS)和广度优先搜索(BFS)。DFS是从一个顶点出发,递归地访问其所有相邻顶点,直到所有可达的顶点都被访问...

    稀疏矩阵转置_clearlybgo_稀疏矩阵转置_稀疏矩阵_

    三元组存储结构是稀疏矩阵的一种表示方式,它记录了矩阵中每个非零元素的行号、列号和值。例如,对于一个m×n的矩阵,如果只有k个非零元素,那么我们只需要用一个大小为3k的数组来存储这k个非零元素的行号、列号和...

    NETBEANS编写各种矩阵类代码

    `Matrix.java`可能包含一些通用的矩阵操作,如矩阵加法、减法、标量乘法等,而`SanYuanZu.java`可能表示三元组类,这是稀疏矩阵存储的一个组成部分,用于存储非零元素的行号、列号和值。 在.NETBEANS中,开发者可以...

    java面试题-leetcode题解之第74题搜索二维矩阵.zip

    第74题,"搜索二维矩阵",是一道典型的数组处理和二分查找问题,它要求我们在一个由整数构成的二维矩阵中查找指定的目标值。下面我们将深入探讨这个题目及其解法,并从中提炼出重要的Java编程和算法知识点。 首先,...

    java面试题-leetcode题解之第378题有序矩阵中第K小的元素.zip

    第378题是关于在有序矩阵中找到第K小的元素,这涉及到数组处理、排序算法以及二分查找等核心概念。下面我们将深入探讨这个问题及其解决方案。 ### 1. 有序矩阵 有序矩阵是指矩阵中的每一行和每一列都是从小到大排列...

    图的邻接矩阵实现及深度优先搜索(JAVA)

    在这个话题中,我们将深入探讨如何使用Java语言实现图的邻接矩阵表示法以及如何进行深度优先搜索(DFS)。 首先,邻接矩阵是一种二维数组,用于存储图中节点之间的连接信息。如果节点i和节点j之间存在边,那么邻接...

    JAVA 实现查找数组中的最大最小元素

    利用JAVA程序实现输入任意的一个数组元素,分辨出该数组中的最大元素和最小元素并输出

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...

    apriori改进算法,使用矩阵实现

    矩阵中的元素值为1表示交易包含该项目,为0则表示不包含。这样可以快速地进行并行计算和查找操作。 2. **支持度计算**:利用矩阵乘法,可以快速计算项集的支持度。例如,对于长度为2的项集AB,其支持度等于矩阵A与...

    Java实现的计算稀疏矩阵余弦相似度示例

    在本示例中,我们将学习如何使用Java实现稀疏矩阵余弦相似度计算,并了解HashMap在数值计算中的应用。 知识点一:稀疏矩阵余弦相似度概念 稀疏矩阵余弦相似度是衡量两个稀疏矩阵之间的相似度的一种方法。它基于...

    图的邻接矩阵

    4. 图的邻接矩阵的查找顶点:可以使用一个函数来查找顶点字符在顶点数组中的位置,例如: ```c int locate(graph gr,char c){ int s; for(s=0;s;s++){ if(gr.vexs[s]==c) return s; } } ``` 5. 图的邻接矩阵的...

    基于java的递归遍历矩阵源代码.zip

    递归遍历矩阵在实际应用中有多种用途,如图像处理(如查找特定模式)、游戏AI(如搜索路径)、数据结构分析等。了解如何在Java中使用递归遍历矩阵是提升编程技能和解决问题能力的重要一步。通过阅读并理解“Matrix....

Global site tag (gtag.js) - Google Analytics