Posted on 2010-05-23 18:09
千張 閱讀(2404)
評論(3) 編輯 收藏 引用 所屬分類:
程序員筆試寶典
題目:實現兩個N*N矩陣的乘法,矩陣由一維數組表示。
答案:
#include <iostream>
using namespace std;

#define SIZE 2

int* multi(int* array_a,int* array_b,int N)


{
int* array_c = (int*)malloc(N*N);
int temp;
for (int i = 0; i < N; ++ i)
for(int j = 0; j < N; ++ j)

{
temp = i * N + j;
*(array_c + temp) = 0;
for (int k = 0; k < N; ++ k)

{
*(array_c + temp) += array_a[i * N + k] * array_b[k * N + j];
}
cout << *(array_c + temp) << " ";
}
return array_c;
}

int main()


{

int array_a[SIZE * SIZE] =
{1,2,1,2};

int array_b[SIZE * SIZE] =
{2,1,2,1};
int* array_c = multi(array_a,array_b,SIZE);
free(array_c);
return 0;

}
注意:malloc或new分配內存后,要用free或delete釋放內存,要不然可能有“_CrtIsValidHeapPointer異常”,也會有內存泄露。
From:http://hi.baidu.com/feigudian/blog/item/ac608c013c81d0d5277fb5ee.html