package 第五次作业;
import java.util.Scanner;
public class 鞍点 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//找出一个二维数组的鞍点
//即该位置上的元素在所在行上最大,在所在列上最小(也
//可能没有鞍点)。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [ ][ ] arr = new int[n][n];
for(int i1=0;i1<n;i1++) {
for(int j1=0;j1<n;j1++) {
arr[i1][j1]=sc.nextInt();
}
}
int x = 0;
int y=0;
int min1=0;
int max1=0;
for(int i = 0;i<n;i++) {
int max=arr[i][0];
for(int j=1;j<n;j++) {
if(arr[i][j]>max) {
max=arr[i][j];//行最大
x=i;
y=j;//列
max1=max;
}
int min = arr[x][y];
if(arr[i][y]<arr[x][y]) {
min=arr[i][y];
min1=min;
}
}//
if(max1==min1) {
System.out.print("鞍点:"+max);
}
else {
System.out.print("没鞍点");
}
}
}
}
import java.util.Scanner;
public class 鞍点 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//找出一个二维数组的鞍点
//即该位置上的元素在所在行上最大,在所在列上最小(也
//可能没有鞍点)。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for(int i1 = 0; i1 < n; i1++) {
for(int j1 = 0; j1 < n; j1++) {
arr[i1][j1] = sc.nextInt();
}
}
boolean flag = false; //标记是否找到鞍点
for(int i = 0; i < n; i++) {
int max = arr[i][0];
int x = i;
int y = 0;
for(int j = 1; j < n; j++) {
if(arr[i][j] > max) {
max = arr[i][j];
y = j;
}
}
int min = arr[x][y];
for(int k = 0; k < n; k++) {
if(arr[k][y] < min) {
min = arr[k][y];
x = k;
}
}
if(max == min) {
System.out.println("鞍点在第" + (x+1) + "行,第" + (y+1) + "列,值为" + max);
flag = true;
}
}
if(!flag) {
System.out.println("没有鞍点");
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:优先级反置是一种现象,发生在基于优先级的调度算法中,即高优先级进程等待低优先级进程的现象。主要原因是资源的占用现象,低优先级占用资源,等待资源使用结束后才能释放资源,需要相同资源的高优先级进程就需要等待。
下面介绍两个解决方法。