如何处理以2D数组编写的条件

Hem*_*ava 2 c++ algorithm matrix

考虑这个二维数组:

  A B C D E
A 1 0 0 0 0
B 0 1 1 0 0
C 0 1 1 0 0
D 0 0 0 1 1
E 0 0 1 1 1
Run Code Online (Sandbox Code Playgroud)

这意味着A 可以与A映射,但是sureshot不能与B,C,D或E映射。

同样,B 可以与B和C映射,而不能与A,D和E映射。

这可能意味着它可能已映射或未映射。

现在,我必须编写一个c ++代码以确保此映射成立并断言是否成立。

我已经写了一个关于这个(骨骼)的if否则代码。我正在检查B不能确定射击是否匹配的条件。

if (checking_for_B) {
  if (B is mapped with A || B is mapped with D || B is mapped with E) {
    assert();
  }
}
Run Code Online (Sandbox Code Playgroud)

同样,我也必须为A,B,C,D和E编写if条件。我对这种方法不满意。如果你是我,你会写什么?

Som*_*ude 5

我会尝试通过将字母变成行和列索引来解决您的问题,并检查是否允许该组合。

然后,您就不需要“ checking_for_A”,然后再需要“ checking_for_B”等。就像

if (my_map[row_letter_index][column_letter_index])
{
    // All okay, allow
}
else
{
    // Not allowed, report or abort or throw exception or anything else
}
Run Code Online (Sandbox Code Playgroud)