这是我在这里的第一个问题。
我有一个像这样的 5x5 矩阵:
a + b * c
* d + f +
g * h + i
+ j + k *
l + m * n
有人可以帮我找到一个算法来找到这个矩阵中所有可能的数学运算吗?
这是我在这里的第一个问题。
我有一个像这样的 5x5 矩阵:
a + b * c
* d + f +
g * h + i
+ j + k *
l + m * n
有人可以帮我找到一个算法来找到这个矩阵中所有可能的数学运算吗?
假设只允许直线:首先列出所有 10 列和行,如下所示:
a + b * c
* d + f +
g * h + i
+ j + k *
l + m * n
a * g + l
+ d * j +
b + h + m
* f + k *
c + i * n
砍掉边缘不可用的运算符:
a + b * c
d + f
g * h + i
j + k
l + m * n
a * g + l
d * j
b + h + m
f + k
c + i * n
然后:
x ∙ y
,评估x
, y
, 和x ∙ y
, 和x ∙ y ∙ z
,计算x
, y
, z
, x ∙ y
, y ∙ z
, 和x ∙ y ∙ z
.有多种方法可以做到这一点,但我会这样做:(我为您提供了 java 中的示例代码,但您也应该能够用其他语言实现它)
循环遍历多维并查看每个值是否是数学运算字符。
public static void main(String[] args) { char[ ][ ] aryChar = new char[5][5]; aryChar[0][0] = 'a'; aryChar[0][1] = '+'; aryChar[0][2] = 'b'; aryChar[0][3] = '*'; aryChar[0][4] = 'c';
aryChar[1][0] = '*';
aryChar[1][1] = 'd';
aryChar[1][2] = '+';
aryChar[1][3] = 'f';
aryChar[1][4] = '+';
aryChar[2][0] = 'g';
aryChar[2][1] = '*';
aryChar[2][2] = 'h';
aryChar[2][3] = '+';
aryChar[2][4] = 'i';
aryChar[3][0] = '+';
aryChar[3][1] = 'j';
aryChar[3][2] = '+';
aryChar[3][3] = 'k';
aryChar[3][4] = '*';
aryChar[4][0] = 'l';
aryChar[4][1] = '+';
aryChar[4][2] = 'm';
aryChar[4][3] = '*';
aryChar[4][4] = 'n';
int rows=5;
int columns=5;
int i, j;
for (i=0; i < rows ; i++) {
for (j=0; j < columns ; j++) {
//you can add more || to add other math operations
if(aryChar[ i ][ j ]=='*' ||aryChar[ i ][ j ]=='+' ){
System.out.print("found math operations");
System.out.print( aryChar[ i ][ j ] + " " +"\n");
}
}
}
System.out.println( "" );
}