我有两节课
class CSparseMatrix:
{
public int NumberOfDimensions { get; set;}
public int DefaultNumber { get; set; }
List<int> dimensionsRanges = new List<int>(); // that's specify dimension of ranges, f.e. {100, 100, 100, 120..}
List<CSparseCell> cells = new List<CSparseCell>(); // contains only values different from default for this matrix
}
class CSparseCell {
public int Value { get; set; }
public List<int> coordinates = new List<int>();
}
问题是:如何循环CSparseMatrix
并输出所有范围的值,格式如下:[0, 0, 0, 0] - *value*, [0, 0, 0, 1] - *value*, [0, 0, 0, 2] - *value*, ...[dimensionsRanges[0]-1, dimensionsRanges[1]-1, dimensionsRanges[2]-1, dimensionsRanges[3]-1] - *value*
所以通过所有范围并输出所有值(我们可以有任意数量的这种维度)。这意味着在程序中我们必须输出矩阵的所有值,它可以有任意数量的维度和范围可以不同。但是我们不知道这个维数是多少,所以不能使用 n 嵌套循环,实际上我不知道如何迭代所有值的算法或方法List<int> dimensionsRanges
我们从这个“矩阵”中得到具体值的方式是
public int GetValueFromCell(List<int> coordinate)
{
foreach(CSparseCell cell in cells)
{
if(cell.coordinates.All(coordinate.Contains)) {
return cell.Value;
}
}
return DefaultNumber;
}