求方阵的鞍点(即在行最小列最大的那个点)
package suanfa;
import java.util.Scanner;
/**
* 求矩阵的鞍点,所谓鞍点就是行上最小而列上最大的点
*
* @author dell
*
*/
public class AnDian {
/**
* 循环输入方阵的值
* @param n方阵的每一行的长度
* @return一个方阵
*/
public static double[][] input(int n) {
double arc[][] = new double[n][n];
System.out.println("请输入n*n矩阵的各个值");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
Scanner s = new Scanner(System.in);
System.out.print("d");
double arcValue = s.nextDouble();
arc[i][j] = arcValue;
}
}
return arc;
}
/**
* 输出方阵的值
* @param arc
*/
public static void print(double arc[][]) {
for (int i = 0; i < arc.length; i++) {
for (int j = 0; j < arc.length; j++) {
System.out.print(arc[i][j] + " ");
}
System.out.println();
}
}
public static void main(String args[]) {
double arc[][] = input(3);
print(arc);
getAn(arc);
}
/**
* 寻找并打印出鞍点
* @param arc
*/
public static void getAn(double arc[][]) {
double min;
for (int i = 0; i < arc.length; i++) {
min = arc[i][0];// 令第i行的最小值是该行的第一个元素
int minIndex = 0;// 记录第i行的最小元素的位置
// 找到第i行的最小元素,并记录其所在的列
for (int j = 1; j < arc.length; j++) {
if (min > arc[i][j]) {
min = arc[i][j];
minIndex = j;
}
}
// 遍历第i行最小值的那一列
for (int k = 0; k < arc.length; k++) {
if (min < arc[k][minIndex]) {
// 如果不是该列的最大值,说明没有鞍点
System.out.println("第" + i+"行" + "第" + minIndex+ "列" + "没有鞍点");
break;
} else if (k ==arc.length- 1) {//说明min是鞍点打印即可
System.out.println("鞍点为 " +min + "位置是" +"第" + i+"行" + "第" + minIndex+ "列");
}
}
}
}
}
相关文章
- TeeChart的最小步长和最大步长
- grid - 网格轨道最小和最大尺寸
- 动态规划求解数组连续最大和
- 【BZOJ1449/2895】[JSOI2009]球队收益/球队预算 最小费用最大流
- 求公司派对的最大快乐值
- k8s【资源管理】3--LimitRange为命名空间配置 CPU 最小和最大约束
- k8s【资源管理(resources)】4--LimitRange为配置命名空间内存最小和最大约束
- C++第7周任务2-四数中的最大
- 《模式识别》学习笔记(十七)含拒绝判断的最小损失准则,最小最大损失准则
- 错过了炒房圣地深圳,是人生最大失误
- 最大子段和
- 力扣解法汇总2016-增量元素之间的最大差值
- 最大公因数和最小公倍数
- 谁是白盒网络市场最大玩家
- 8.10 最大流最小割定理
- 欧洲最大光伏企业宣布破产 中国市场暂时安全
- HDU 1532||POJ1273:Drainage Ditches(最大流)
- 【历史上的今天】10 月 30 日:英特尔最大失误;图像冒险游戏的发明者诞生;最后一台 Multics 计算机被关闭
- springboot 中配置最大传输数据或上传文件的大小