java輸出馬鞍數
- 2022-05-11
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 flag = false; //不符合條件則將標記置為false } tempi++; } if(flag){ System。out。println(“馬鞍數是 第”+(i+1)+“行第”+(tempj+1)+“列的數:”+tempM); } } if(!flag){ System。out。println(“該組數中不存在馬鞍數!”); } } }
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int i, j, k, r, c, min,flag;
java。util。Scanner scan = new java。util。Scanner(System。in);//獲取控制檯的輸入
int n = scan。nextInt();//輸入n
int m = scan。nextInt();//輸入m
int a[][] = new int[n][m];
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
a[i][j] = scan。nextInt();//按行輸入矩陣
}
}
flag = 0;
for (j = 0; j < n; j++) {//每次掃描一行。先找出該行最小的值,再判斷該最小值是不是在列中最大
min = a[j][0];
r = j;
c = 0;
for (k = 1; k < m; k++) {
if (min > a[j][k]) {
min = a[j][k];
r = j;
c = k;
}
}//找到行中最小值
for (k = 0; k < n; k++) {
if (min <= a[k][c]) {
if (r != k)
break;
}
}//判斷是否為列中最大值
if(k == n)//如果既為行最小,也為列最大則輸出,並退出。
{
flag = 1;
System。out。println(“馬鞍數是:”+a[r][c]+“位置是在”+(r+1)+“行”+(c+1)+“列。”);
break;
}
}
if(flag==0)
System。out。println(“Not found!”);
}
}
import java。util。*;
public class Matrix{
/** 尋找馬鞍點的函式,A為矩陣,m和n分別是行數和列數*/
public void saddlePoint(int A[][],int m, int n){
List
List
int i,j,min,max,p = -200;
for(i=0;i min=A[i][0];//設每行第一個元素最小 for(j=0;j if(A[i][j] } list1。add(min);//行最小存在list1 } for(j=0;j max=A[0][j]; for(i=0;i if(A[i][j]>max)max =A[i][j]; } list2。add(max);//列最大存在list2 } int j1 =0,j2 = 0 ; for(i=0;i for(j=0;j if(list1。get(i)==list2。get(j)){ //既是行最小又是列最大 p = list1。get(i);//賦給p j1=i+1; j2=j+1;//記錄行號和列號 System。out。println(“第”+j1+“行” +“第”+j2+“列是馬鞍點:”+p); } } } if(p == -200)System。out。println(“無馬鞍點!”); //如果p值不變,則無馬鞍點 } public static void main(String[] args) { Matrix matrix =new Matrix(); int[][] A ={{1,2,3,4},{4,5,6,7},{15,7,7,0}}; matrix。saddlePoint(A, 3, 3); } } public class P1{ private int[][] a=null; private int rownum=0,colnum=0; //儲存每行中最小的那個數的行和列,如“1,2”——-第一行,第二列 private int[] rows=null; //儲存每列中最大的那個數的行和列,如“1,2”——-第一行,第二列 private int[] cols=null; private int num=0; P1(int[][] a,int row,int col){ this。a = a; this。rownum=row; this。colnum=col; rows = new int[row]; cols = new int[col]; } public void setMinRow(){ int min; int minIndex; for(int r=0;r min = a[r][0]; minIndex=0; for(int c=0;c if(a[r][c] min = a[r][c]; minIndex=c; } } rows[r]=minIndex; } } public void setMaxCol(){ int max; int maxIndex; for(int c=0;c max = a[0][c]; maxIndex=0; for(int r=0;r if(a[r][c]>max){ max = a[r][c]; maxIndex=r; } } cols[c]=maxIndex; } } public void getSaddleNUm(){ setMinRow(); setMaxCol(); for(int r=0;r if(r==cols[rows[r]]){ num++; System。out。println(“第”+num+“個馬鞍點是行”+r+“列”+rows[r]+“:”+a[r][rows[r]]); } } } public void print(){ for(int r=0;r for(int c=0;c System。out。print(a[r][c]+“ ”); } System。out。println(“”); System。out。println(“——————-”); } } public static void main(String[] args){ //存放矩陣的數值 int[][] a1 = {{1,5,9,10,2},{7,5,6,3,2},{11,7,9,0,12},{6,9,13,10,21},{11,4,13,40,32},{21,16,91,100,42}}; //第一個引數為存放矩陣的陣列,第二個引數為矩陣行數,第三個為矩陣列數 P1 p = new P1(a1,6,5); p。getSaddleNUm(); p。print(); System。out。println(“矩陣擁有的馬鞍點數為:”+p。num); } } #include