方陣旋轉 藍橋杯

2021-08-27 10:48:11 字數 718 閱讀 6351

這是2023年藍橋杯全國軟體大賽預賽(c++本科組)第5題,問題是矩陣的旋轉。

對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號

例如,如下的方陣:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

轉置後變為:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

但,如果是對該方陣順時針旋轉(不是轉置),卻是如下結果:

13 9 5 1

14 10 6 2

15 11 7 3

16 12 8 4

下面的**實現的功能就是要把乙個方陣順時針旋轉。

void rotate(int* x, int rank)

for(i=0; ifree(y);

}int main(int argc, char* argv)

,,,};

int rank = 4;

rotate(&x[0][0], rank);

for(int i=0; iprintf("\n");

} return 0;

}

sizeof(int) * rank * rank

(i % 4) * 4 + 3 - (i / 4)

藍橋杯 方陣旋轉

時間限制 1 sec 記憶體限制 128 mb 提交 30 解決 12 提交 狀態 對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號。但,如果是對該方陣順時針旋轉 不是轉置 下面的 實現的功能就是要把乙個方陣順時針旋轉。void rotate int x,int rank int y int...

藍橋杯 轉方陣

對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後變為 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如下結果 1...

藍橋杯 轉方陣

對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後變為 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如下結果 1...