2013-05-26 159 views
2

我有下面的C#代碼:矩陣C#替換值

int[,] mt = { { 5, 4, 6, 2 }, { 8, 1, 5, 4 }, { 2, 3, 8, 6 }, { 9, 6, 1, 8 } }; 
     int i, min, index, j, v; 
     for (i = 0; i < mt.GetLength(1); i++) 
     { 
      index = 0; 
      min = int.MaxValue; 
      for (j = 0; j < mt.GetLength(0); j++) 
      { 
       v = mt[j, i]; 
       if (v < min) 
       { min = mt[j, i]; index = j; } 
      } 
      mt[i, index] = mt[i, i]; mt[i, i] = min; 

     } 
     for (i = 0; i < mt.GetLength(0); i++) 
     {//print the matrix after changes 
      for (j = 0; j < mt.GetLength(1); j++) 
       Console.Write("{0,3}", mt[i, j]); 
      Console.WriteLine(); 
     } 
     Console.ReadLine(); 

這段代碼應該做的是用值來代替每個山坳的最低值,在主對角線的同山坳至極部分(這是二次矩陣)。

因此,col中minmial值的單元格在同一列中的主對角線上獲取單元格的值,並且主對角線上的單元格獲得同一列中最小數目的單元格的值。

我想上面的代碼,但我得到這樣的結果:

{ { 2, 4, 5, 2 }, { 4, 1, 3, 6 }, { 5, 5, 1, 1 }, { 2, 4, 8, 2 } }; 

這是我應該得到:

{ { 2, 4, 6, 8 }, { 8, 1, 5, 4 }, { 2, 3, 1, 8 }, { 8, 6, 1, 2 } }; 

我的問題是什麼,我應該更改代碼以獲得無聊的結果?

希望得到幫助,謝謝!

回答

7

你應該寫:代替

mt[index, i] = mt[i, i]; 

mt[i, index] = mt[i, i]; 
+0

您好,感謝你這麼多,我這樣做了愚蠢的錯誤!再次感謝! –