解決矩陣中一行含有多個相同最大值的鞍點查詢法
package classPack; import bascPack.ArrayTest; import java.util.*; /** * Created by cloud on 2017/7/9. */ public class TwoDimensionTest { public static void main(String[] args) { // int row = 3, column = 3; //這裡註釋的部分是自己也可以自定義一個二維陣列初始化的入口 // int[][] arr = new int[row][column]; // init(arr); int[][] arr={{5,6,6,6},{10,10,7,9},{11,9,8,8},{15,8,6,7},{4,6,5,6}}; ArrayTest.myprint2(arr); searchSaddlePiont(arr); } private static void searchSaddlePiont(int[][] arr) { for (int m = 0; m <arr.length ; m++) { Map<Integer, Integer> map = rowSearch(arr,m); Set<Map.Entry<Integer,Integer>> entrySet=map.entrySet(); Iterator<Map.Entry<Integer, Integer>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<Integer, Integer> me = it.next(); Integer j = me.getKey(); Integer i = me.getValue(); columnSerach(i, j, arr); } } } public static Map<Integer, Integer> rowSearch(int[][] arr, int i) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); int max = arr[i][0]; for (int j = 0; j < arr[i].length; j++) { if (arr[i][j] > max) max = arr[i][j]; } for (int j = 0; j <arr[i].length ; j++) { if (arr[i][j] == max) map.put(j, i); } System.out.println("行最大值座標(行在後面):"+map); return map; } private static void init(int[][] arr) { Random random = new Random(); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { arr[i][j] = random.nextInt(10); } } } public static void columnSerach(int i, int j,int[][] arr) { int min = arr[i][j]; int flag=1; for (int k = 0; k <arr.length ; k++) { if(arr[k][j]<min){ System.out.println("第"+(i+1)+"行沒有鞍點"); flag = 0; break; } } if (flag == 1) { System.out.println("第"+(i+1)+"行存在鞍點arr["+i+"]"+"["+j+"]="+arr[i][j]); } } }
結果如下圖:
下面換一個5*4矩陣進行測試,這裡換矩陣只要在源程式中更改陣列初始化的數值即可,在程式中將二維陣列初始化為下面這樣:
int[][] arr={{5,6,6,6},{10,10,7,9},{11,9,8,8},{15,8,6,7},{4,6,5,6}};結果如下:
若是要測試別的矩陣是否有鞍點,只要自定義初始化的矩陣值即可,有問題的可以和我一起交流,歡迎。
相關推薦
解決矩陣中一行含有多個相同最大值的鞍點查詢法
package classPack; import bascPack.ArrayTest; import java.util.*; /** * Created by cloud on 2017/7/9. */ public class TwoDimensionTest
Oracle中取多個欄位多個列最大值最小值的方法
已知表TB的資料如下 SQL> select * from tb; ID CHINESE MATH ENGLISH ---------- ---------- ---------- ---------- 1001 89 98 87 1
VS2010開啟專案提示未能正確載入解決方案中一個或多個專案
今天開啟vs2010專案,竟然提示“未能正確載入解決方案中一個或多個專案”,還有什麼詳細去輸出看,我在網上找了下,沒有解決,我看輸出下邊是說“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.t
編寫一個字串(a~z)過濾函式,對於字形符串中出現的多個相同的字形符,將非首次出現的字元過濾掉
public class StringFilter { public static String stringFilter(String input) { boolean[] bools = new boolean[26]; for (int i = 0; i <
shell 腳本中獲取mysql多個字段的值
mysql 腳本 shel 從mysql中查詢出的結果為:mysql -Ne "SELECT ip,port FROM op.host WHERE os=‘linux‘ and type=‘支持‘" +------------+------+ | 10.3.1.155 | 22 | | 10.
劍指offer系列——二叉搜尋樹的第k個結點,資料流的中位數,滑動視窗的最大值
二叉搜尋樹的第k個結點 題目描述 給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。 解題思路: 二叉搜尋樹中序遍歷就能排好序,所以中序遍歷到第k個結點就是第k小的結點。 程式
java三個取最大值、菜單新增修改、猜數字大小
com nbsp 大小 .com java img image ava 分享 java三個取最大值、菜單新增修改、猜數字大小
oracle 資料庫對於多列求最大值
1.案例: SELECT GREATEST('36', '55', '34') V_MAX, LEAST('36', '55', '34') V_MIN FROM DUAL Oracle比較一列的最大值或者最小值,我們會不假思索地用MAX和MIN函式,但是對於比較一行的最大值
輸出10個整數最大值
注意:將輸出最大值語句放在for迴圈之外,否則會輸出每次比較的最大值 #include<stdio.h> void Max(int array[]) { int max = array[0]; for (int i = 0; i <= 10; i++) { if
Python遞迴求出列表(包括列表中的子列表)的最大值
Python遞迴求出列表(包括列表中的子列表)中的最大值 要求:求出列表中的所有值的最大數,包括列表中帶有子列表的。 按照Python給出的內建函式(max)只能求出列表中的最大值,無法求出包括列表中的子列表的最大值 Python3程式碼如下: #
Java中獲取一個數組的最大值和最小值
先定義一個數組,獲取其中的最大值和最小值 package Hello; public class test { public static void main(String[] args) {
Oracle中取某幾個數的最大值最小值
Oracle中取某幾個數的最大值最小值 一直有誤區認為Oracle或者說關係型資料庫中沒有取某些資料中最大值最小值的函式,其實是存在的 分別為: greatest( expr1, expr2, ... expr_n ) least( expr1, expr2, ...
Sliding Window 單調佇列解決--經典滑動視窗問題--求視窗的最大值最小值
這就要用到單調遞減或單調遞增佇列來實現,它的頭元素一直是佇列中的最小值或最大值。我們可以從佇列的末尾插入一個元素,可以從佇列的兩端刪除元素。 插入元素: 對於單調遞減佇列:隊頭放最大值,為了保持佇列的遞減性,我們在插入元素v的時候,要將隊尾元素與v比較,如果隊尾<
求任意多個數的最大值(利用可變引數列表)
可變引數列表是通過巨集來實現的,這些巨集定義於stdarg.h標頭檔案中。這個標頭檔案聲明瞭一個型別va_list和三個巨集va_start,va_arg,va_end.我們可以宣告一個型別為va_list的變數與這幾個巨集配合使用,訪問引數的值。
求n個數中兩數異或的最大值(字母樹)
#include <stdio.h> #include <string.h> #include <math.h> #include <iostream> #include <string> #include <
求一個數組中, 連續幾個數的最大值,及其變種
import java.util.Arrays; import java.util.Scanner; public class KeShui { public static int max = 0; //網易瞌睡 public static void maxiva
把陣列中的數拼接起來,求最大值(最小值)
問題分析 最暴力的解法就是把所有的組合都找出來, 然後排序得到最大值(或者最小值),這樣還搞什麼演算法,直接拋棄. 這個問題的思路為: 在一個數組中依次選出最合適的值放在結果中. 那麼問題就變成了如
C語言求兩個整數最大值
上程式碼: #include<stdio.h> #define Max(a,b) ((a>b)?(a):(b)) //預處理實現 int max(int a,int b) //函式實現 {return a>b?a:b; } int main()
ORACLE 內建函式之 GREATEST 和 LEAST(求多列的最大值,最小值)
轉載自:http://dlblog.iteye.com/blog/1274005 Oracle比較一列的最大值或者最小值,我們會不假思索地用MAX和MIN函式,但是對於比較一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有內建函式實現這個功能:COALESCE / GREATES
陣列中兩個數異或求最大值
特別說明:本文轉載自lingen1949 大神的文章,按照個人理解增加了部分註釋,感謝大神提供思路。在此附上原文連結: 題目要求: Given a non-empty array of numbers, a0, a1, a2, … , an-1, where