-4

这是我在这里的第一个问题。

我有一个像这样的 5x5 矩阵:

 a + b * c
 * d + f +
 g * h + i
 + j + k *
 l + m * n

有人可以帮我找到一个算法来找到这个矩阵中所有可能的数学运算吗?

4

2 回答 2

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, 和x ∙ y ∙ z.
于 2013-06-18T20:31:22.703 回答
0

有多种方法可以做到这一点,但我会这样做:(我为您提供了 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( "" );
    

    }

于 2013-06-18T20:47:04.590 回答