public class Tsun0408 {
//定义一个二维数组,找到其中某个值,在行中最小,列中最大的值
public static int[][] arr = new int[][]{{13,7,15,18,19,21,23,5,14,19,41,32,87},
{2,4,16,9,8,32,12,1,100,19,91,27,12}
};
public static int left = 0,//左右移动
end = 0;//上下移动
public static void main(String[] args) {
//将原点与上下左右的值进行比较,如果发现原点不满足条件,就返回继续循环
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
left=i;end=j;//原点位置
if(Gs(i,j)&&Bs(i,j)&&Hs(i,j)&&Ks(i,j))
System.out.println("满足条件的值为->"+arr[i][j]);
}
}
}
public static boolean Gs(int x,int y){
boolean f = true;
//这一行是否有值比自身要小,只要判断有一个值比自己小,f=false;
if(y+1<arr[x].length){
if(arr[x][y+1]<arr[left][end]){
f=false;
}else{
f=Gs(x,y+1);
}
}
return f;//判断右边
}
public static boolean Bs(int x,int y){
boolean f=true;
//与自身左边这一行的所有元素进行比较,其中只要有一个值小于原点,f=false
if(y-1>=0){
if(arr[x][y-1]<arr[left][end]){
f=false;
}else{
f=Bs(x,y-1);
}
}
return f;//判断左边
}
public static boolean Hs(int x,int y){
boolean f=true;
//与自身上面这一列的所有元素进行比较,只要有一个值大于原点,f=false
if(x-1>=0){
if(arr[x-1][y]>arr[left][end]){
f=false;
}else{
f=Hs(x-1,y);
}
}
return f;//判断上面
}
public static boolean Ks(int x,int y){
boolean f=true;
//与自身下面这一列的所有元素进行比较,只要有一个值大于原点,f=false
if(x+1<arr.length){
if(arr[x+1][y]>arr[left][end]){
f=false;
}else{
f=Ks(x+1,y);
}
}
return f;//判断下面
}
}
找到二维数组一行中最小,但同时该数又是一列中最大的数。
于 2022-04-08 00:19:11 首次发布