'commit'
This commit is contained in:
60
TangDou/LuoGuBook/第8章模拟与高精度/P4924.md
Normal file
60
TangDou/LuoGuBook/第8章模拟与高精度/P4924.md
Normal file
@@ -0,0 +1,60 @@
|
||||
### 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);
|
||||
```
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user