模拟题,、tle+re,非常不理解
这玩意真的好难搞,求各位大奆帮忙,本蒟蒻真的不知道怎么写
#include <iostream>
using namespace std;
void mirror(char a[100][100],int n,int m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m/2;j++)
{
int t = a[i][j];
a[i][j] = a[i][m-j-1];
a[i][m-j-1] = t;
}
}
}
void rotate(char a[100][100],int n,int m)
{
char b[100][100];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
b[j][n-i-1] = a[i][j];
}
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
a[i][j] = b[i][j];
}
int main()
{
char a[100][100];
char s[100];
int i,j,k=0,p;
int n,m;
cin>>n>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
cin>>s;
while(s[k] != '\0')
{
switch(s[k])
{
case '0': //镜像
mirror(a,n,m);
break;
case '1': //旋转
rotate(a,n,m);
i = n;
n = m;
m = i;
break;
}
k++;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
return 0;
}
你是不是每次把中间态都算了一下emm
理论上经过若干次的两种操作,最终的图片状态应该只有16种吧,即图片的四个角度,以及图片是否在两个轴向进行过翻转
两个轴向的旋转也应该可以互相表示,最终应该只有八种状态,通过读取输入最后计算图片会落入哪个状态试试