本文说明一个java逻辑问题。
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(乙) 甲=乙,且在列阵里表示的是同一个人。
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(乙) 甲=乙,且在列阵里表示的是同一个人。