首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 矩阵中查寻定值

2012-09-14 
Java 矩阵中查找定值引子:http://www.iteye.com/topic/1118928在一个二维数组中,每一行都按照从左到右递增

Java 矩阵中查找定值

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

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

?

Java 矩阵中查寻定值
解法:
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;}}
?

热点排行