2012-02-24 8 views
1

最大値の行の列に最小値を取得しようとしています。私はループを使用しようとしていますが、動作しません。 [検索Iは、プログラムが[0]行目の最大値を見つけたい配列内の最大/最小値を取得しようとしています

は、行列Aをしましょう最大値の列の最小値。 結果は次のようになります:最大行[0] = 5、最小列[2] = 3 それから、すべての行を同じようにしたいのです。ここで

は行列です:

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; 


} 

、これは私がこれまで持っているものです。colunmで最大値を検索し、次にの行の最小値を見つけるための

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."); 
    } 

} 
+0

マトリックスの定義方法を表示できますか?これはすべて1行に記載されているので、2行目がどこから始まるかは不明です。 –

+0

@HunterMcMillen私はそれを編集しました。 –

+0

A [a]とは何ですか?どこから来たのですか? – John3136

答えて

1

は、ソリューションです:このコードスニペットは、

public void get_minimum_of_the_column_of_local_maximum() 
{ 
    for (int i = 0; i < A.length; i++) 
    { 
     min = Integer.MAX_VALUE; 
     max = Integer.MIN_VALUE; 
     int index_of_maximum_in_its_row = 0; 

     for (int j = 0; j < A [ i ].length; j++) 
      if (A [ i ] [ j ] > max) 
       { 
        max = A [ i ] [ j ]; 
        index_of_maximum_in_its_row = j; 
       } 

     for (int j = 0; j < A [ index_of_maximum_in_its_row ].length; j++) 
      if (A [ j ] [ index_of_maximum_in_its_row ] < min) 
       min = A [ j ] [ index_of_maximum_in_its_row ]; 

     System.out.print(" Maximum of row [" + i + "] = " + max); 
     System.out.println(" Minimum of column [" + index_of_maximum_in_its_row + "] = " + min); 
    } 
} 

何をしますか?

あなたはmin = Integer.MAX_VALUE, max = Integer.MIN_VALUEの変数を持っています。これらの値をこの数値に割り当てる理由は、可能な限り最大/最小値を見つけることです。どうやって?最初はminが最大の整数値を持っていますが、それよりも小さい値を見つける限り最小値を更新するので、minの値は減少します。変数はmaxと同じですが、もちろんそれは比較の後に値が増加することによって他の方向に向かいます。

最初のinner forループは、行iの最大値を決定し、変数index_of_maximum_in_its_rowを使用してその行の最大インデックスをマークします。後で2番目の内側ループで使用する必要があります。

第2の内部ループは、列番号index_of_maximum_in_its_rowの最小値を決定し、その列に対して1回の反復を行います。このメソッドは結果を出力します。

+0

ありがとう、私はまた、列のmac値を検索し、行の行で最小値を見つけるためにこれを使用しようとしています。私はそれをここに貼り付けることができたら私はそれを貼り付けますが、私は私のオリジナルを編集します –

+0

いいです。わかった。 :) –

+0

ヤコンドラデソンあなたが私の投稿を読んだら、私はそれが自明であると思う。 – Juvanis

0

これは最も簡単な実装です。

for(int i=0; i<arr.length ; i++){ 
    int columnNumber = getMaxElementsColumnNumber(arr,i); // i will represent row number 
    int minElement = getMinimumElementInColumn(arr,columnNumber); 
} 

getMaxElementsColumnNumber()は、現在の行の最大数を印刷し、その要素の列番号

getMinimumElementInColumn()は行列の列を横断し、その列の最小の要素を返します戻ります。

同じforループでコードを実装できます。このようにして、鞍点を確認することもできます。ここで

+0

getMaxElementsColumnNumber()およびgetMinimumElementInColumn()は静的ですか? –

+0

これはforループが書き込まれる方法に依存します。そのメソッドが静的である場合、これらの2つのメソッドを静的にする必要もあります。これは、問題を解決するために使用できるロジックを示すサンプルコードです。問題を解決する限り、あなたにとって快適な方法で、これらのメソッドとして実装できます。 – JProgrammer

関連する問題