幾個常見的問題提供參考:
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];}