2015-09-26 3 views
0

Это традиционный метод, который я нашел, используя 3 "для" петель.Как умножить две матрицы только на один цикл в Java?

public int [][] multiMatrices(int[][] m1, int [][] m2){ 

    int fil_m1 = m1.length; 
    int col_m1 = m1[0].length; 

// int fil_m2 = m2.length;  //NOT NECESSARY 
    int col_m2 = m2[0].length; 

    int [][] end = new int [fil_m1][col_m2]; 

    for (int x=0; x < end.length; x++) { 
     for (int y=0; y < end[x].length; y++) { 
      for (int z=0; z<col_m1; z++) { 
       end[x][y] += m1[x][z]*m2[z][y]; 
      } 
     } 
    } 
    return end; 
} 

Теперь я пытаюсь получить тот же результат, но цель состоит в том, чтобы использовать только одно «для». Для упражнения я не могу использовать внешнюю библиотеку. Я нашел нечто, называемое алгоритмом Штрассена, оно может или не поможет.

Любая помощь будет высоко оценена.

ответ

1
for (int x=0,y=0,z=0; x < end.length ; z++) { 

       if(z==col_m1) {z=0;y++;}     
       if(y==end[x].length){y=0;x++;} 
       end[x][y] += m1[x][z]*m2[z][y]; 
     } 
    } 
Смежные вопросы