не оптимизированный вариант
Чтобы сократить количество потоков данных, следует вынести выражение (c[j] = 0) в отдельный цикл, переписав код так:
for(j = 0; j < n; j++)
c[j] = 0;
for(i=0; i<m; i++)
for(j = 0; j < n; j++)
a[j][i] = a[j][i] + b[j][i] * c[j];