【发布时间】:2012-03-14 12:53:02
【问题描述】:
我试图在最大值行的列中获取最小值。我试图使用 for 循环,但它不起作用。
假设一个矩阵 A:
3 4 5
2 3 4
1 2 3
我希望程序在第 [0] 行中找到最大值,然后在最大值的列中找到最小值。 所以结果应该是:第 [0] 行的最大值 = 5,第 [2] 列的最小值 = 3。 然后我希望它对所有行都执行相同的操作,这就是我使用 while 循环的原因。
这是矩阵:
public int[][] createMatrix(int a, int b){
Scanner inputm = new Scanner(System.in);
A = new int[a][b];
System.out.println("Enter elements for matrix A : ");
for (int i=0 ; i < A.length ; i++){
System.out.println("Enter numbers for " + i +"th row");
for (int j=0 ; j < A[i].length ; j++){
A[i][j] = inputm.nextInt();
}
}
return A;
}
public int[][] displayMatrix(){
System.out.println("Matrix A: ");
for (int i=0 ; i < A.length ; i++)
{ System.out.println();
for (int j=0 ; j < A[i].length ; j++){
System.out.print(A[i][j]+" ");
}
}
return A;
}
public int getMaximumOfEveryRow (int c){
a=c;
int i= 0;
int j;
while(i < A[a].length){
max = Integer.MIN_VALUE;
for ( j = 0; j < A [ i ].length; j++ )
if ( A [ i ] [ j ] > max ){
max = A [ i ] [ j ];
}
for ( i = 0; i < A [ i ].length; i++ )// e
if ( A [ i ] [ j ] < min ){
min = A [ i ] [ j ];
}
System.out.println( "\n Maximum of row " + j + " = " + max );
System.out.println( "Minimum of column " + i + " = " + min );
if(max == min){
System.out.println( min+ " = " + max );
System.out.println( "This is a saddle point. ");
}
i++;
}
return max;
}
这就是我目前所拥有的:
public int getMaximumOfEveryRow (int c){
a=c;
int i= 0;
int j;
while(i < A[a].length){
max = Integer.MIN_VALUE;
for ( j = 0; j < A [ i ].length; j++ )
if ( A [ i ] [ j ] > max ){
max = A [ i ] [ j ];
}
int e = j;
int r;
for ( i = 0; i < A [ i ].length; i++ )// e
if ( A [ i ] [ j ] < min ){
min = A [ i ] [ j ];
}
System.out.println( "\n Maximum of row " + j + " = " + max );
System.out.println( "Minimum of column " + i + " = " + min );
if(max == min){
System.out.println( min+ " = " + max );
System.out.println( "This is a saddle point. ");
}
i++;
}
return max;
}
public int getMaximumOfEveryColumn ()
{
for ( int i = 0; i < A.length; i++ )
{
maxc = Integer.MIN_VALUE;
for ( int j = 0; j < A [ i ].length; j++ )
if ( A [ j ] [ i ] > maxc )
maxc = A [ j ] [ i ];
System.out.println( "Maximum of column " + i + " = " + maxc );
}
return maxc;
}
public int getMinimumOfEveryColumn_(){
for ( int i = 0; i < A.length; i++ )
{
minc = Integer.MAX_VALUE;
for ( int j = 0; j < A [ i ].length; j++ )
if ( A [ j ] [ i ] < minc )
minc = A [ j ] [ i ];
System.out.println( "Minimum of column " + i + " = " + minc );
}
return minc;
}
public int getMaximumOfEveryRow ()
{
for ( int i = 0; i < A.length; i++ )
{
maxr = Integer.MIN_VALUE;
for ( int j = 0; j < A [ i ].length; j++ )
if ( A [ i ] [ j ] > maxr )
maxr = A [ i ] [ j ];
System.out.println( "Maximum of row " + i + " = " + maxr );
}
return maxr;
}
用于在列中查找最大值,然后在该最大值所在的行中查找最小值的代码。
public void get_max_of_the_row_of_local_min ()
{
for ( int i = 0; i < A.length; i++ )
{
min = Integer.MAX_VALUE;
max = Integer.MIN_VALUE;
int index_of_min_in_its_col = 0;
//maxc = Integer.MIN_VALUE;
for ( int j = 0; j < A [ i ].length; j++ )
if ( A [ j ] [ i ] > max ){
max = A [ j ] [ i ];
index_of_min_in_its_col = i;
System.out.println( " Maximum of col [" + i + "] = " + max);
}
for ( int j = 0; j < A [ index_of_min_in_its_col ].length; j++ )
if ( A [ index_of_min_in_its_col ] [ index_of_min_in_its_col ] < min ){
min = A [ index_of_min_in_its_col ] [ index_of_min_in_its_col ];
a =j;
}
//System.out.print( " Maximum of col [" + j + "] = " + max);
System.out.println( " Minimum of rol [" + index_of_min_in_its_col + "] = " + min );
if(max == min){
System.out.println("This is a saddle point.");
}
}
【问题讨论】:
-
你能说明矩阵是如何定义的吗?它全部在一行中列出,因此不清楚第二行从哪里开始。
-
@HunterMcMillen 我刚刚编辑了它。
-
什么是 A[a] ? a 是从哪里来的?
-
@ayokunleadeosun 改进了代码格式。如果您使用的是 eclipse - CTRL+SHIFT+F
-
@gt_ebuddy 抱歉,我使用的是 Netbeans。
标签: java arrays matrix max min