-5

これらのようなマトリックスを閲覧したい:

閲覧したいマトリックスの例

最初の行を参照し、最小の番号を取得してから、前の最小の番号に一致する行を参照します。

例 : A 行をブラウズします。セル A をブラウズします。セル A を参照すると、GI は 8 を取得しますが、5 よりも優れているため保持しません。セル A、K を参照すると、4 を取得します (< 5)。

今のところは問題ありません。これを行うには単純なループで十分です。次に、行 K を参照したいのですが、可能であればセル K、A を参照しないでください。これは、行 A を参照したときに既に参照しているためです。

4

2 に答える 2

0

ここで私が見つけた解決策:

    private static IEnumerable<int> ComputeMatrix(int[,] matrix)
    {
        // check args
        if (matrix.Rank != 2) { throw new ArgumentException("matrix should have a rank of 2"); }
        if (matrix.GetUpperBound(0) != matrix.GetUpperBound(1)) { throw new ArgumentException("matrix should have the same size");}

        // indice treated
        List<int> treatedIndex = new List<int>();

        for (int i = 0; i <= matrix.GetUpperBound(0); i++)
        {
            if (treatedIndex.Count == matrix.GetUpperBound(0)) 
                break;

            // distance minimum between 2 points
            int distanceMin = Int32.MaxValue;

            // next iteration of index
            int nextI = i;

            // add the index to ignore in the next iteration
            int nextJ = -1;

            for (int j = 0; j <= matrix.GetUpperBound(1); j++)
            {
                if (treatedIndex.IndexOf(j) == -1)
                {
                    if (matrix[i, j] != 0 && matrix[i, j] < distanceMin)
                    {
                        distanceMin = matrix[i, j];
                        nextI = j;
                        nextJ = i;
                    }
                }
            }

            i = nextI - 1;
            treatedIndex.Add(nextJ);
            yield return distanceMin;
        }
    }
于 2012-08-16T13:09:14.870 に答える
0

行列の上/下半分をループする必要がありますか? 行列は int 配列の配列であると仮定します。

var matrix = new int[][]{ ... };
int smallest = 0;
for(int i = 0; i < matrix.Length; i++)
{
    for(int j = 0; j < matrix.Length; j++)
    {
        int number = matrix[i][j];
        if (number != 0 && number < smallest)
            smallest = number;
    }
}

とはいえ、よくわかりませんでした

次に、前の最小番号に一致する行を参照します

部。

于 2012-08-14T13:25:00.180 に答える