package com.interview.multiarray;
public class MatrixCalculation {
private int r = 0;
public String[][] crossMultiply(String[][] str){
int cols = 1;
for(int i=1; i < str.length; i++){
cols = cols*str[i].length;
}
String[][] result = new String[str[0].length][cols];
for(int i=0; i < str[0].length ; i++){
StringBuffer buffer = new StringBuffer();
r=0;
buffer.append(str[0][i]);
recur(buffer,result,str,1,i);
}
return result;
}
private void recur(StringBuffer buffer,String[][] result,String[][] str,int currentRow,int mainCol){
if(currentRow == str.length){
result[mainCol][r++] = buffer.toString();
return;
}
for(int i=0; i < str[currentRow].length; i++){
StringBuffer tempBuffer = new StringBuffer(buffer);
buffer.append(str[currentRow][i]);
recur(buffer,result,str,currentRow+1,mainCol);
buffer = tempBuffer;
}
}
public static void main(String args[]){
MatrixCalculation mc = new MatrixCalculation();
String[][] str = {{"abc","def","gh"},{"l","m"},{"p","q","r"},{"x","y"}};
String[][] result = mc.crossMultiply(str);
for(int i=0; i < result.length; i++){
for(int j=0; j < result[i].length; j++){
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
}