幾個常見的問題提供參考:
Q1 翻轉以後array的行數和列數會改變,但是array大小沒辦法修改?
A1 在初始化array的時候,就用行數或列數中最大的值來設定array
ex.
常使用: int arr[2][3] = {0};
//無法在改變大小
推薦:在最一初獲得R和C時,先寫:
int tmp = 0;
if(R > C) tmp = R;
else tmp = C;
在寫:
int arr[tmp][tmp] = {0};
//這樣翻轉都不會有問題 但這樣不要用.size()存取arr大小,要隨時記得自己arr現在的R和C是多少
Q2 測試執行給的資料怪怪的?
A2 直接隨便用一組數值測試就好 要自己改一下測試執行所用的資料,只要用:
3 2 3 1 1 3 1 1 2 1 0 0
或是
3 2 2 3 3 2 1 1 2 0 1
其中一個測試,不要直接按測試鍵
Q3 翻轉的寫法
//R C和題目所指的東西一樣
for(int i=0; i<R/2; i++){ //只需要翻轉一半的次數 而且不用擔心R為奇數 因為/會只剩下整數部分
for(int j=0; j<C; j++){
//下面三行用來把值翻轉
tmp = arr[R-i-1][j];
arr[b_x-i-1][j] = arr[i][j];
arr[i][j] = tmp;
}
}
int tmp = 0; //互換R C時用
int temp[C][R] = {0}; //temp用來暫時儲存二維陣列
//翻轉
for(int j=0; j<C; j++){
for(int k=0; k<R; k++){
temp[j][k] = arr[k][C-j-1];
}
}
//交換陣列長度到當前狀態
tmp = R;
R = C;
C = tmp;
//將翻轉後的陣列(temp)重新輸入回最初的陣列(arr)
for(int i=0; i<R; i++){
for(int j=0; j<C; j++) arr[i][j] = temp[i][j];
}