程式扎記: [C++ 考題] 請寫出函數可以判斷傳入矩陣是否為左右對稱矩陣

標籤

2011年9月30日 星期五

[C++ 考題] 請寫出函數可以判斷傳入矩陣是否為左右對稱矩陣


題目 :
請參考如下API Interface 寫出可以判斷傳入整數矩陣是否為左右對稱矩陣, 舉例如[12321], [1252521], [11], [2] 為對稱, 但[123], [12], [1232] 為不對稱.
  1. /* 
  2. * 判斷傳入 array 的元素是否左右對稱, 如[12321], [1252521], [11], [2] 都算對稱.  
  3. * [123], [12], [1232] 都不對稱.  
  4. */  
  5. bool simpleTest3(int array[], int size);  


解題說明 :
1. 考慮提供的範例, 只要矩陣的元素小於等於1 都算對稱. 故不需要進行運算.
2. 接下來就由矩陣最左邊與最右邊逐一取出元素來比對, 一發現不同即返回 false.
3. 比到最後如果都相同, 則返回 true.

* 範例代碼 :
  1. bool simpleTest3(int array[], int size) {  
  2.     if(size <= 1) {  
  3.         return true;  
  4.     }  
  5.     int mid = size/2;  
  6.     for(int i=1; i<=mid; i++) {  
  7.         if(array[i-1] != array[size-i]) {  
  8.             return false;  
  9.         }  
  10.     }  
  11.     return true;  
  12. }  
* 呼叫API 範例代碼 :
  1. int p[6] = {1,2,3,3,2,1};  
  2.         int p2[7] = {1,3,5,7,7,3,1};  
  3.         bool b = simpleTest3(p, 6);  
  4.         if(b) {  
  5.             printf("p array 對稱 ^^\n");  
  6.         }else {  
  7.             printf("p array不對稱 = =\"\n");  
  8.         }  
  9.         b =  simpleTest3(p2, 7);  
  10.         if(b) {  
  11.             printf("p2 array 對稱 ^^\n");  
  12.         }else {  
  13.             printf("p2 array不對稱 = =\"\n");  
  14.         }  

執行結果 :
p array 對稱 ^^
p2 array不對稱 = ="

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!