F - Rolling table HDU - 2135
After the 32nd ACM/ICPC regional contest, Wiskey is beginning to prepare for CET-6. He has an English words table and read it every morning.
One day, Wiskey's chum wants to play a joke on him. He rolling the table, and tell Wiskey how many time he rotated. Rotate 90 degrees clockwise or count-clockwise each time.
The table has n*n grids. Your task is tell Wiskey the final status of the table.
One day, Wiskey's chum wants to play a joke on him. He rolling the table, and tell Wiskey how many time he rotated. Rotate 90 degrees clockwise or count-clockwise each time.
The table has n*n grids. Your task is tell Wiskey the final status of the table.
InputEach line will contain two number.
The first is postive integer n (0 < n <= 10).
The seconed is signed 32-bit integer m.
if m is postive, it represent rotate clockwise m times, else it represent rotate count-clockwise -m times.
Following n lines. Every line contain n characters.
OutputOutput the n*n grids of the final status.
Sample Input
3 2 123 456 789 3 -1 123 456 789
Sample Output
987
654
321
369
258
147
把数据放在矩阵里然后直接改变输出方向就可以了、
#include<iostream>
using namespace std;
int main()
{
char num[11][11];
int n, m;
while (cin >> n >> m)
{
for (int i = 1; i <= n;i++)
for (int j = 1; j <= n; j++)
cin >> num[i][j];
m %= 4;
if (m < 0) m = 4 + m;
if (m == 0)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cout << num[i][j];
}
cout << endl;
}
}
else if (m == 1)
{
for (int i = 1; i <= n; i++)
{
for (int j = n; j >= 1; j--)
{
cout << num[j][i];
}
cout << endl;
}
}
else if (m == 2)
{
for (int i = n; i >= 1; i--)
{
for (int j = n; j >= 1; j--)
{
cout << num[i][j];
}
cout << endl;
}
}
else if (m == 3)
{
for (int i = n; i >= 1; i--)
{
for (int j = 1; j <= n; j++)
{
cout << num[j][i];
}
cout << endl;
}
}
}
return 0;
}
我觉得这个题可以练习一下找bug的技巧。将它的转几次改为把每一次都输出,来寻找bug更好