2013-06-18 73 views
-4

這是我第一次遇到問題。操作數和操作符的矩陣

我有一個5×5矩陣像這樣:

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

有人可以幫助我找到一個算法來找出這個矩陣的所有數學運算可能嗎?

+0

請精確地定義了 「數學運算」?我們應遵守哪些規則? –

+1

你需要更清楚你要找什麼。你真的在問關於Java,還是你的問題與語言無關? – iamnotmaynard

+3

請列出本例中所有可能的數學運算。 –

回答

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的每個條目,評估xy,和x ∙ y,並且
  • 的形式x ∙ y ∙ z的每個條目,評估xyzx ∙ yy ∙ zx ∙ y ∙ z
+0

謝謝你的回答。不僅線性操作是允許的。即使a * d * g是一個有效的操作,因爲我需要知道這個矩陣中的所有操作。謝謝 –

0

有多種方法可以做到這一點,但這裏是我怎麼會去這樣的:(我提供了Java中的示例代碼爲你,但你應該能夠在其他語言中實現這個太)

  • 創建一個多維數組來保存您的值
  • 儘管循環多維,並看看每個值是否是數學運算字符。公共靜態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(""); 
    

    }

+0

對不起,我不清楚。我的問題是要找到矩陣中所有可能的操作模式,例如:1)a + b 2)a + b * c 3)a + d4)a * d等等...... –