public class findSaddlPoint{
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了莲池免费建站欢迎大家使用!
public static void main(Stirng args[]){
int[][] intArray = new int[][];
//只是你要搜索的2维数组。这里假设你已经赋值了。
int temp=intArray[0][0];
int i=1;
int isSaddlePoint = false;
for(k =0;kintArray.length;k++){
for(i =1;iintArray.length;i++){
if(tempintArray[i][k]) temp=intArray[i][k];
}
for(int j=0;jintArray.length;j++){
if(tempintArray[i][j]) {
isSaddlePoint = false;
break;
}
isSaddlePoint = true;
}
if(isSaddlePoint) System.out.println(temp);
}
}
}
#include#defineN10#defineM10voidmain(){inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;printf("输入行数n:");scanf("%d",n);printf("\n输入列数m:");scanf("%d",m);for(i=0;imax){max=a[i][j];maxj=j;}for(k=0,flag1=1;ka[k][maxj])flag1=0;if(flag1){printf("\n第%d行第%d列的%d是鞍点\n",i,maxj,max);flag2=1;}}if(!flag2)printf("\n矩阵无鞍点!\n");}
/*
程序的功能:
求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大、在该列上为最小,
矩阵中可能没有鞍点,但最多只有一个鞍点。
m、n(2=m=20、2=n=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大/最小的情况)。
*/
public static void main(String[] args) {
int[][] arr = new int[20][20];
int m, n;
int max, min;
int maxHPos, maxLPos, minHPos, minLPos;
int flag = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入m的值:");
m = sc.nextInt();
System.out.println("请输入n的值:");
n = sc.nextInt();
/* 从键盘输入m×n矩阵,并存放到数组arr中 */
System.out.println("请输入矩阵的值:");
for (int i = 0; i m; i++) {
for (int j = 0; j n; j++) {
arr[i][j] = sc.nextInt();
}
}
/* 在矩阵中找鞍点 */
for (int i = 0; i m; i++) {
/* 找第i行的最大值及最大值的下标(包括行标和列标),i的值从0开始 */
max = arr[i][0];
maxHPos = i;
maxLPos = 0;
for (int j = 1; j n; j++) {
if (arr[i][j] max) {
max = arr[i][j];
maxHPos = i;
maxLPos = j;
}
}
/* 在第i行的最大值所在列找该列的最小值及其下标 */
min = arr[0][maxLPos];
minHPos = 0;
minLPos = maxLPos;
for (int k = 1; k m; k++) {
if (arr[k][maxLPos] min) {
min = arr[k][maxLPos];
minHPos = k;
minLPos = maxLPos;
}
}
/* 判断第i行的最大值是否是第i行最大值所在列的最小值,如果是,找到鞍点*/
if ((maxHPos == minHPos) (maxLPos == minLPos)) {
System.out.println(String.format("有鞍点:arr[%d][%d]=%d", maxHPos,
maxLPos, arr[maxHPos][maxLPos]));
flag = 1; //给变量flag赋值1,表示鞍点已找到
break; //鞍点已找到,结束查找过程
}
}
if (0 == flag) //flag的值为0,表示在矩阵中没有找到鞍点
{
System.out.println("没有鞍点");
}
}
class mypoint
{
public static void main (String args[])
{
int a[][]={{1,2,3,4,5},{7,3,4,5,6},{2,1,5,4,3},{5,3,6,5,4}};
int i,j,temp;
int maxa[][]=new int [4][5];
int mina [][]=new int [4][5];
//求出行中最小值并标记
for(i=0;ia.length;i++)
{
temp=a[i][0];
for(j=1;ja[i].length;j++)
if (a[i][j]temp)
temp=a[i][j];
for (j=1;ja[i].length;j++)
if(a[i][j]==temp)
mina[i][j]=1;
}
//求出列中最大值并标记
for(j=0;ja[0].length;j++)
{
temp=a[0][j];
for(i=1;ia.length;i++)
if (a[i][j]temp)
temp=a[i][j];
for (i=1;ia.length;i++)
if(a[i][j]==temp)
maxa[i][j]=1;
}
//打印输出矩阵
for(i=0;ia.length;i++)
{
for(j=0;ja[i].length;j++)
System.out.print(" "+a[i][j]+" ");
System.out.println();
}
//求马鞍点并打印输出
for(i=0;ia.length;i++)
{
for(j=0;ja[i].length;j++)
if(mina[i][j]+maxa[i][j]==2)
System.out.println(" "+i+"行"+j+" 列是一个马鞍点值 ="+a[i][j]);
}
}
}
package com.njty.test;
/**
* 马鞍数
* @author Administrator
*
*/
public class MAS {
/**
* @param args
*/
public static void main(String[] args) {
//定义二维数组
int arrays[][] = {
{5,6,3,8,9},
{4,5,6,7,8},
{3,4,5,2,1},
{2,3,4,9,0},
{1,2,5,4,8}
};
boolean flag = true; //用于标记是否是马鞍数
for(int i = 0; i 5; i++){
int tempM = arrays[i][0]; //首先将第一行第一列数假设就是马鞍数
int tempi = 0; //用于行判断
int tempj = 0; //用于存储每行最小数所在的列数
for(int j = 0; j 5; j++){
if(arrays[i][j] tempM){//找到行中最小的数
tempM = arrays[i][j];
tempj = j; //保存最小数的列数
}
}
while(tempi 5){
if(tempM arrays[tempi][tempj]){//判断是否是列中最大的数
flag = false; //不符合条件则将标记置为false
}
tempi++;
}
if(flag){
System.out.println("马鞍数是 第"+(i+1)+"行第"+(tempj+1)+"列的数:"+tempM);
}
}
if(!flag){
System.out.println("该组数中不存在马鞍数!");
}
}
}
public static void main(String[] args)
{
int mat[][] = new int[4][4];
Scanner sc = new Scanner(System.in);
for (int i = 0; i 4; i++)
{
for (int j = 0; j 4; j++)
{
mat[i][j] = sc.nextInt();
}
}
for (int i=0;imat.length;i++) //输出二维数组元素
{
for(int j=0;jmat[i].length;j++)
System.out.print(mat[i][j]+" ");
System.out.println();
}
boolean find = false; //找到鞍点标记
int row=0; //第1行下标
int max=0; //记录当前行最大值的列下标
while (!find rowmat.length)
{
max=0; //初始设每行第1列值最大
for (int j=1;jmat[row].length;j++) //在row行上找最大值
if (mat[row][j]mat[row][max]) //mat[row][max]为该行最大值
max = j;
boolean yes = true; //再判断mat[row][max]是否在列上最小
int j=0;
while (yes jmat.length)
{
if(mat[j][max]mat[row][max])
yes=false;
j++;
}
if (yes)
find = true;
else
row++;
}
if (find)
System.out.println("The dort: "+mat[row][max]);
else
System.out.println("The dort: null");
}