السلام عليكم ورحمه الله وبركاته
هذا هو برنامج ضرب محددين او 2 Matrix وهما فى هذا البرنامج مربعتين اى 2*2
مثل هذه الأسئله شهيره فى مقابلات الشركات الكبيره مثل ياهوو وجوجل و Hp وغيرها فلا يجب ان نكون بمنأى عنها ..
عدد عمليات الجمع فى البرنامج 8 و المطلوب تقليلهم الى 4 .. وبالتالى تحسين تعقيد البرنامج من n3 الى( n3-n2)
العداد داخل اللوب يخرج الرقم 8 ,, المطلوب اضافه تعديل بسيط بحيث يخرج العدد 4 بدلا من 8 مع الحفاظ على الثلاث لوب
class MatrixMultiply{
public static void main(String[] args) {
int A[][] = {{2,3},{4,1}};
int B[][] = {{5,7},{6,8}};
int C[][] = new int[2][2];
int x= A.length;
int count_additions =0;
for(int i = 0; i < x; i++) {
for(int j = 0; j < x; j++){
C[j] = 0;
for(int k = 0; k < x; k++){
C[j] += A[k] * B[k][j];
//C[j] = A[k] * B[k][j] + A[k+1] * B[k+1][j]; // my wrong trial
count_additions++;
}
}
}
System.out.println("Multiply of both matrix : ");
for(int i = 0; i < x; i++) {
for(int j = 0; j < x; j++) {
System.out.print(" "+C[j]);
}
System.out.println();
}
System.out.println("# of additions is " + count_additions );
}
}الناتج الصحيح للمصفوفه
38 28
التعديل 36 26
number of additions is 8 == > number of additions is 4


