Rolling table
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2024 Accepted Submission(s): 977
Problem Description
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.
Input
Each 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.
Output
Output 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
Author
Wiskey
Source
HDU 2007-11 Programming Contest_WarmUp
题目大意:给你一个N*N的字符矩阵,再给一个翻转次数M,翻转一次为90°,M为正
表示顺时针翻转,M为负表示逆时针旋转。
思路:将M对4取余,总共分四种情况,根据翻转情况输出相应结果。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
char s[12][12];
int main()
{
int M,N;
while(cin >> N >> M)
{
getchar();
memset(s,0,sizeof(s));
for(int i = 0; i < N; ++i)
cin >> s[i];
if(M%4==1 || M%4==-3)
{
for(int j = 0; j < N; ++j)
{
for(int i = N-1; i >= 0; --i)
cout << s[i][j];
cout << endl;
}
}
else if(M%4 == 2 || M%4==-2)
{
for(int i = N-1; i >= 0; --i)
{
for(int j = N-1; j >= 0; --j)
cout << s[i][j];
cout << endl;
}
}
else if(M%4 == 3 || M%4==-1)
{
for(int j = N-1; j >= 0; --j)
{
for(int i = 0; i < N; ++i)
cout << s[i][j];
cout << endl;
}
}
else
{
for(int i = 0; i < N; ++i)
{
for(int j = 0; j < N; ++j)
cout << s[i][j];
cout << endl;
}
}
}
return 0;
}
HDU2135 Rolling table【水题】
原文:http://blog.csdn.net/lianai911/article/details/43279799