100個人組成10*10的方隊,橫隊稱為行,縱隊稱為列。從每一行中挑出最高的一個人,共10人,再從這10個人中挑出最矮的一個人,記做甲;同時從每一列中挑出最矮的一個人,共10人,再從這十人中挑出最高的一個人,記做乙,甲和乙誰高,為什麼
..一個貌似比較復雜的邏輯問題....
原始方陣為person[ i ][ j ]
則從該方陣中選出的每行最大值為max[ i ],從方陣中選出的每列最小值為min[ i ]。
從max[ i ]中選出的最小值為 max_min(甲),它的屬性是:大於等於任何與它在同一行的其他值
從min[ i ]中選出的最大值為 min_max(乙),它的屬性是:小於等於任何與它在同一列的其他值
則可以得出以下結論:
當甲和乙處於同一行或列時,甲>=乙
當甲和乙是同一個人時,甲==乙
當甲和乙處於不同行或列時,因為甲是大於等於任何與它在同一行中的值,又因為乙小於等於所在列的其余值,所以對應甲的行與對應乙的列相交的時候,交點必定滿足 甲 >= 交點,乙 <=交點,合並得 甲 >= 交點 >= 乙,結果: 甲>=乙
-----------------------------------------------------------------------
關於甲和乙是同一個人的實例:
9,8,7,6,5
8,7,6,5,4
7,6,5,4,3
6,5,4,3,2
5,4,3,2,1
max = { 9,8,7,6,5 }
min={ 5,4,3,2,1 }
則max_min = 5(甲), min_max = 5(乙) 甲=乙,且在列陣裡表示的是同一個人。