-
1、矩阵旋转
- 1、顺时针右旋270°后与原数组一致说明他已经顺时针旋转90°
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(g[i][j]==gg[j][n-i+1])
cnt90++;
}
}
- 顺时针右旋180°后与原数组一致证明他已经顺时针旋转180°
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(g[i][j]==gg[n-i+1][n-j+1])
cnt180++;
}
}
- 顺时针右旋90°后与原数组一致证明他已经顺时针旋转270°
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(g[i][j]==gg[n-j+1][i])
cnt270++;
}
}
- 但要拷贝一个临时数组用作交换基相当于a和b交换需要t作为中转,如果没有交换基前面的交换会影响后面的交换
int a[6][6];
int b[6][6];
int step=0;
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
a[i][j]=++step,b[i][j]=step;
}
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
输出:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 10
21 22 23 24 25
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
a[i][j]=b[5-j+1][i];
}
}
输出:
21 16 11 6 1
22 17 12 7 2
23 18 13 8 3
24 19 14 9 4
25 20 15 10 5
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
a[i][j]=b[5-i+1][5-j+1];
}
}
输出:
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
a[i][j]=b[j][5-i+1];
}
}
输出:
5 10 15 20 25
4 9 14 19 24
3 8 13 18 23
2 7 12 17 22
1 6 11 16 21
- 逆时针旋转情况按照顺时针推就好了
- 周期填数
- 一个数组有十个数但只给了3个(三个为一个周期)填满数组定义一个数为周期每次++,是周期的倍数就从头再填到新数组中
-
210809完结