public class findSaddlPoint{
網站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蓮池免費建站歡迎大家使用!
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");
}