这是我在这里的第一个问题。
我有一个像这样的矩阵5x5:
a + b * c
* d + f +
g * h + i
+ j + k *
l + m * n
有人可以帮我找一个算法来找到这个矩阵中可能的所有数学运算吗?
答案 0 :(得分:1)
假设只允许直线:首先列出所有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
和{{1 }}。答案 1 :(得分:0)
有多种方法可以做到这一点,但这是我将如何做到这一点:(我为您提供了一个java示例代码,但您也应该能够用其他语言实现这一点)
循环遍历Multi-Dimensional并查看每个值是否为数学运算字符。
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( "" );
}