博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中南oj String and Arrays
阅读量:5282 次
发布时间:2019-06-14

本文共 1999 字,大约阅读时间需要 6 分钟。

题目链接:

Problem B: String and Arrays

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 222  Solved: 56
[][][]

Description

    有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列。

    对于这个矩阵会进行一系列操作,但这些操作只有两类:
    (1) R: 将矩阵逆时针旋转90度;
    (2) P x y: 将此时第x行第y列的字符打印出来,其中1 <= x, y <= N

Input

    输入数据的第一行包含一个整数T (1 <= T <= 20),表示接下来一共有T组测试数据。

    对于每组测试数据,第一行包含一个整数N (1 <= N <= 300),含义同上。接下来一共有N行,每行均包含N个大写字母,描述了这个矩阵的初始情况。再接下来一行包含一个整数M (1 <= M <= 10000),表示一共对矩阵进行了M次操作。接下来M行,每行均包含一个符合上述格式的操作,依次描述了这M个操作。

Output

    对于每个第(2)类操作,用一行打印出指定位置的字符。

    相邻的两组测试数据中间用一个空行隔开。

Sample Input

32ABCD3P 1 1RP 1 12ABCD4RRP 2 1P 1 23ABCDEFGHI5P 3 3RP 3 3RP 3 3

Sample Output

ABBCIGA 解题思路:看似直接模拟两种操作就好了,打印字符最简单了,而旋转矩阵也不是很麻烦,不过可能要借助一个“中间矩阵”来完成旋转更好一些。但问题来了,如果每个R我们都进行旋转的话,实际上代价是很大的,对于这个题目而言会超时。也许你会机智地想到把相邻的R操作合并成一个,这样代价会小一点,是的,但是这样并不能解决根本问题,比如R和P是交替出现的。 其实我们根本没必要按题意来去旋转矩阵,可以直接找到要打印的字符在初始矩阵中的位置!(不错的想法,有的时候没必要想的太过复杂) 最后注意:每组测试数据之间有一个空行~避免pe 详见代码。
1 #include 
2 #include
3 4 using namespace std; 5 6 char ch; 7 int n; 8 char str[310][310]; 9 char fun(int x,int y,int l)10 {11 if (l==1)12 return str[y][n-x+1];13 else if (l==2)14 return str[n-x+1][n-y+1];15 else if (l==3)16 return str[n-y+1][x];17 else18 return str[x][y];19 }20 21 int main ()22 {23 int T,m,x,y;24 scanf("%d",&T);25 while (T--)26 {27 int ans=0;28 scanf("%d",&n);29 for (int i=1;i<=n;i++)30 {31 scanf("%s",str[i]+1);32 }33 scanf("%d",&m);34 while (m--)35 {36 getchar();37 //scanf("%c%d%d",&ch,&x,&y);38 scanf("%c",&ch);39 if (ch=='P')40 {41 scanf("%d%d",&x,&y);42 printf ("%c\n",fun(x,y,ans%4));43 }44 else45 ans++;46 //printf ("")47 }48 if (T)49 printf ("\n");50 }51 return 0;52 }

 

 

转载于:https://www.cnblogs.com/qq-star/p/4379193.html

你可能感兴趣的文章
软件随笔
查看>>
C/C++知识补充 (1)
查看>>
Fast Poisson Disk Sampling
查看>>
Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
查看>>
Linux下SVN自动更新web [转]
查看>>
编程:对经验世界的析构与建构
查看>>
Openstack api 学习文档 & restclient使用文档
查看>>
vim linux下查找显示^M并且删除
查看>>
poj100纪念
查看>>
ExtJs4 笔记(5) Ext.Button 按钮
查看>>
把execl导入到数据库中
查看>>
阿里云人脸比对API封装
查看>>
如何将数据库中的表导入到PowerDesigner中(转)
查看>>
汇编总结一
查看>>
html5-表单常见操作
查看>>
String = ""和String = null的区别
查看>>
C#测试题若干,都是基础阿
查看>>
NetWork——关于TCP协议的三次握手和四次挥手
查看>>
An easy problem
查看>>
MauiMETA工具的使用(一)
查看>>