操作数和运算符的矩阵

时间:2013-06-18 20:17:40

标签: algorithm

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

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

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

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

2 个答案:

答案 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的每个条目,评估xyx ∙ y以及
  • 对于表单x ∙ y ∙ z的每个条目,评估xyzx ∙ yy ∙ 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( "" );
    

    }