二维数组与一维数组的比较

时间:2013-05-24 08:07:42

标签: c# arrays multidimensional-array comparison

我被困在这种情况下, 我必须将二维数组的一行与一维数组进行比较。两个数组都有像+和 - 这样的字符,可以使用两个数组(行和单个数组)完全匹配,但如果有任何字符D(可疑),则应视为包含  例如。      {+, - ,d}与{+, - , - }相比,                              {+, - ,d},                              {+,d,d} 程序应返回行号2和3.

1 个答案:

答案 0 :(得分: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)
}

我建议使用数组数组(锯齿状数组)而不是二维数组。