题目描述

将一幅只含有01像素点的图片进行顺时针旋转,旋转的角度仅包含0°,90°,180°,270°

输入

第一行一个整数T(<50)表示输入的组数

每组测试数据第一行是两个整数N和M(<50)表示图片的高度和宽度

接下来N行,每行是一个01串,表示图像的像素点

最后一行是旋转的角度

输出

输出旋转后的图片,不要输出空余的空格

样例输入

2
2 3
111
000
90
3 3
111
101
111
180

样例输出

01
01
01
111
101
111

来源

2014机考B题   转载请注明出处

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int n,t,m,p;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&m,&n);
string dl;
bool d[][],temp[][];
for(int i=;i<m;i++)
{
cin>>dl;
for(int j=;j<n;j++)
{
d[i][j]=dl[j]-'';
}
}
scanf("%d",&p);
if(p==)
{
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
cout<<d[i][j];
}
cout<<endl;
}
}
if(p==)
{
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
temp[j][m--i]=d[i][j];
}
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cout<<temp[i][j];
}
cout<<endl;
}
}
else if(p==)
{
for(int i=m-;i>=;i--)
{
for(int j=n-;j>=;j--)
{
cout<<d[i][j];
}
cout<<endl;
}
}
else if(p==)
{
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
temp[n--j][i]=d[i][j];
}
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cout<<temp[i][j];
}
cout<<endl;
}
}
}
return ;
}
05-26 09:33