61 lines
1.3 KiB
Markdown
61 lines
1.3 KiB
Markdown
### P4924 [1007]魔法少女小Scarlet
|
||
|
||
#### 1、初始化数组的代码
|
||
```c++
|
||
int cnt = 0; //计数器
|
||
for (int i = 1; i <= n; i++)
|
||
for (int j = 1; j <= n; j++)
|
||
a[i][j] = ++cnt;
|
||
```
|
||
|
||
....
|
||
01 02 03 04 05 06 07 08 09
|
||
10 11 12 13 14 15 15 17 18
|
||
....
|
||
|
||
#### 2、%02d的格式控制
|
||
```c++
|
||
for (int i = 1; i <= n; i++) {
|
||
for (int j = 1; j <= n; j++)
|
||
printf("%02d ", res[i][j]);
|
||
printf("\n");
|
||
}
|
||
```
|
||
|
||
#### 3、矩阵的旋转
|
||
|
||
我们模拟原位置(i,j)在第一象限,i>0,j>0
|
||
逆时针90度,到达的位置是: (-j,i)
|
||
顺时针90度,到达的位置是:(j,-i)
|
||
180度,到达的位置:(-i,-j)
|
||
|
||
想方法背下来:
|
||
|
||
(1)1,3象限,i,j位置不变。
|
||
2,4象限,i,j对调
|
||
|
||
(2)1象限是正的,3象限全是负的
|
||
2象限x是负的,y是正的
|
||
4象限x是正的,y是负的
|
||
|
||
#### 4、矩阵的遍历
|
||
```c++
|
||
//逆时针
|
||
for (int i = -r; i <= r; i++)
|
||
for (int j = -r; j <= r; j++)
|
||
f[x - j][y + i] = res[x + i][y + j];
|
||
//顺时针
|
||
for (int i = -r; i <= r; i++)
|
||
for (int j = -r; j <= r; j++)
|
||
f[x + j][y - i] = res[x + i][y + j];
|
||
```
|
||
|
||
#### 5、临时的矩阵变量
|
||
防止出现自行覆盖的问题,采用的办法是做一个数组的拷贝,复制品。
|
||
```c++
|
||
memcpy(res, f, sizeof f);
|
||
```
|
||
|
||
|
||
|