0
点赞
收藏
分享

微信扫一扫

HDU 2135 Rolling table(方阵旋转+找规律)


Rolling table


Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2404    Accepted Submission(s): 1157


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


题解:就是将数的方阵旋转,每次90度。。。。开数组不能用int类型......坑啊




AC代码:


#include<iostream>  
#include<memory.h>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
#include<iomanip>
#include<vector>
#include<list>
#include<map>
#include<algorithm>
typedef long long LL;
using namespace std;
const LL maxn=1000+10;
const LL mod=10000000;
char a[12][12]; //坑啊。。。要用char,不能用int
int main()
{
int n,m;
while(cin>>n>>m)
{

for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
int k=m%4;
if(k==0){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j];
}
cout<<endl;
}
}
if(k==1||k==-3){
for(int j=1;j<=n;j++)
{
for(int i=n;i>=1;--i)
{
cout<<a[i][j];
}
cout<<endl;
}
}
if(k==2||k==-2)
{
for(int i=n;i>=1;i--)
{
for(int j=n;j>=1;j--)
{
cout<<a[i][j];
}
cout<<endl;
}
}
if(k==3||k==-1)
{
for(int j=n;j>=1;j--)
{
for(int i=1;i<=n;i++)
{
cout<<a[i][j];
}
cout<<endl;
}
}
}
return 0;

}




 

举报

相关推荐

0 条评论