【发布时间】:2012-11-25 15:28:54
【问题描述】:
我有这个矩阵:
A B C
D E F
G H I
我想得到相邻单元格和对角线单元格的所有可能组合,长度为3,例如:
从A开始:
- *ABC* right right
- *ABE* right down
- *ABF* right diagonal-right
- *ABD* right diagonal-left
- ecc ecc
我尝试创建一个名为“letera”的新类,将字母作为键,并使用一个成员来指示指向右、左、下、上 ecc 的指针。还有一个叫做“sequenza”的成员,一个连接它所接触到的每个字母的字符串。
例如,如果 a 作为键,“B”,我有 B->down == *E,B->left == *A,B->right == *C 等等... 它有效。然后我为每个字母设置一个计数器:当它到达 3 时,它应该停止确定组合。
然后是问题的核心:每个字母要遵循的路径...我尝试创建一个递归函数,但它不起作用。
你能帮我看看这个还是建议我用另一种方式?
非常感谢。
代码:
void decisione(lettera *c) {
if (c == nullptr) return ;
c->count++;
c->sequenza = c->sequenza + c->key;
if (c->count == 2)
cout << "\n" << c->sequenza;
//the sequence of letters accumulated in every call
decisione(c->Up);
decisione(c->Down);
}
它给了我例如 AAA 和 BBB,然后它崩溃了 =(
【问题讨论】:
-
不会
B -> down是E吗? -
是的,这是真的,谢谢。错误...编辑了它
-
在调试器中运行以隔离和修复崩溃。
-
完成了,当我没有崩溃时,它只给我 AAA BBB ecc。所以我的解决方案在逻辑上是行不通的。