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



我被困在这种情况下,我需要比较二维数组和一维数组中的一行。两个数组都有像+,-和D这样的字符。为了可用,两个数组(行和单个数组)应该完全匹配,但如果有字符D(表示怀疑),则应将其视为包含如。{+,-,d}与{+,-,-}相比,{+、-、d},{+ d d}程序应该返回行号2和3。

是这样吗?

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)
}

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

相关内容

  • 没有找到相关文章

最新更新