-8

この場合、私は立ち往生しています.2次元配列の行を1次元配列と比較する必要があります。両方の配列に + と - および D のような文字が含まれます。使用できるようにするには、両方の配列 (行と単一の配列) が完全に一致する必要がありますが、(疑わしい) 文字 D が含まれている場合は、包括的であると見なす必要があります。{+,-,d} を {+,-,-}、{+,-,d}、{+,d,d} と比較すると、プログラムは 2 と 3 の行番号を返す必要があります。

4

1 に答える 1

0

そんな感じ?

var mat = new[,] {{'-','+','d'},{'-','-','d'},{'-','d','+'}};
var arr = new[] {'d','-','+'};

var matHeight = mat.GetLength(0);
var validRows = new List<int>();

for (int y = 0; y < matHeight; y++)
{
    bool isRowValid = true;

    for (int x = 0; x < arr.Length; x++)
    {
        if (mat[y, x] != 'd' && arr[x] != 'd' && mat[y, x] != arr[x])
        {
            isRowValid = false;
            break;
        }
    }

    if (isRowValid)
    {
        validRows.Add(y);
    }
}

foreach (var y in validRows)
{
    Console.WriteLine("Row {0} is valid", y);
    // will print 1 and 2 (two last rows indices)
}

ただし、2 次元配列ではなく配列の配列 (ジャグ配列) を使用することをお勧めします。

于 2013-05-24T08:17:48.587 に答える