Files
python/TangDou/LuoGuBook/第8章模拟与高精度/P4924.md
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

61 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 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);
```