题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?cid=2072&pid=1

Problem B: String and Arrays

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

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

3
2
AB
CD
3
P 1 1
R
P 1 1
2
AB
CD
4
R
R
P 2 1
P 1 2
3
ABC
DEF
GHI
5
P 3 3
R
P 3 3
R
P 3 3

Sample Output

A
B B
C I
G
A 解题思路:看似直接模拟两种操作就好了,打印字符最简单了,而旋转矩阵也不是很麻烦,不过可能要借助一个“中间矩阵”来完成旋转更好一些。但问题来了,如果每个R我们都进行旋转的话,实际上代价是很大的,对于这个题目而言会超时。也许你会机智地想到把相邻的R操作合并成一个,这样代价会小一点,是的,但是这样并不能解决根本问题,比如R和P是交替出现的。 其实我们根本没必要按题意来去旋转矩阵,可以直接找到要打印的字符在初始矩阵中的位置!(不错的想法,有的时候没必要想的太过复杂) 最后注意:每组测试数据之间有一个空行~避免pe 详见代码。
 #include <iostream>
#include <cstdio> using namespace std; char ch;
int n;
char str[][];
char fun(int x,int y,int l)
{
if (l==)
return str[y][n-x+];
else if (l==)
return str[n-x+][n-y+];
else if (l==)
return str[n-y+][x];
else
return str[x][y];
} int main ()
{
int T,m,x,y;
scanf("%d",&T);
while (T--)
{
int ans=;
scanf("%d",&n);
for (int i=;i<=n;i++)
{
scanf("%s",str[i]+);
}
scanf("%d",&m);
while (m--)
{
getchar();
//scanf("%c%d%d",&ch,&x,&y);
scanf("%c",&ch);
if (ch=='P')
{
scanf("%d%d",&x,&y);
printf ("%c\n",fun(x,y,ans%));
}
else
ans++;
//printf ("")
}
if (T)
printf ("\n");
}
return ;
}
 

中南oj String and Arrays的更多相关文章

  1. API(Scanner、Random、ArrayList、String、Arrays、Math)

    Scanner import java.util.Scanner; /* public int nextInt(): to get a integer from keyboard public Str ...

  2. List<String> bikeList = Arrays.asList(bikeuuids);

    最近项目中  List<String> bikeList = Arrays.asList(bikeuuids);报错 而且console里面没有特别有用的 bikeList.add(&qu ...

  3. java第4天:String static Arrays类,Math类

    1 字符串的概述和特点 字符串一旦创建,是不可变的. 有双引号的就是字符串 *** 2 字符串的三种构造方法 2-1 第一种: 格式:String str = new String();| :-| 2 ...

  4. csu oj 1341 string and arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...

  5. Java学习笔记之——String和Arrays常用方法

    一.String常用方法 1.subString(int beginIndex,int endIndex) 截取字符串 从beginIndex开始截取,截取endIndex-beginIndex的长度 ...

  6. CSUOJ 1341 String and Arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,--,第N行,从左至右依次记为第1列,第2列,--,第N列.    对于这个矩阵会进行一系列操作,但这些操作只有两类:  ...

  7. 中南oj 1216: 异或最大值 数据结构

    1216: 异或最大值 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 98  Solved: 29 [Submit][Status][Web Boar ...

  8. String and Arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,--,第N行,从左至右依次记为第1列,第2列,--,第N列.    对于这个矩阵会进行一系列操作,但这些操作只有两类:  ...

  9. LeetCode OJ String to Integer (atoi) 字符串转数字

    #include <iostream> #include <assert.h> using namespace std; int ato(const char *str) { ...

随机推荐

  1. mysql的my.cnf配置文件

    [client]port = 3306default-character-set=utf8mb4socket = /var/run/mysqld/mysql.sock# user=david# pas ...

  2. WCF面试精典题汇总

    1.WCF接口中的参数改名问题 在写WCF Web Service接口的时候,如果你对接口的参数名做改动的时候,一定要记住Update所有应用该Web service的客户端的Referrence,否 ...

  3. TCP协议详解7层和4层解析(美团,阿里) 尤其是三次握手,四次挥手 具体发送的报文和状态都要掌握

    如果想了解HTTP的协议结构,原理,post,get的区别(阿里面试题目),请参考:HTTP协议 结构,get post 区别(阿里面试) 这里有个大白话的解说,可以参考:TCP/IP协议三次握手和四 ...

  4. [Leetcode] 2.Add Two Numbers(List To Long,模拟)

    本题题意是指将两个数倒序存储在链表中,再将两数之和同样存储在链表中输出. 我最开始的思路是将每一位相加,再考虑是否进位,但这时就需要考虑一些情况,比较麻烦. 于是我决定采取另一种在网上新学到的方法:这 ...

  5. Delphi开发的一些技巧

    [Delphi]Delphi开发的一些技巧 一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then - ...

  6. RT-thread v2.1.0修正版

    RT-Thread v2.1.0是v2.0.1正式版这个系列的bug修正版.RT-Thread v2.1.0修正的主要内容包括: 这个版本经历的时间比较长,并且原定的一些目标也还未能完成(更全的POS ...

  7. vue-cli项目打包出现空白页和路径错误问题

    vue-cli项目打包: 1. 命令行输入:npm  run  build 打包出来后项目中就会多了一个文件夹dist,这就是我们打包过后的项目. 第一个问题,文件引用路径.我们直接运行打包后的文件夹 ...

  8. Python高级数据类型模块collections

    collections模块提供更加高级的容器数据类型,替代Python的内置dict,list, set,和tuple  Counter对象 提供计数器,支持方便和快速的计数.返回的是一个以元素为键, ...

  9. 转:learning to rank学习

    learning to rank学习 转: http://blog.csdn.net/xuqianghit/article/details/8947819 1. 什么是learning to rank ...

  10. 【题解】NOIP2015推销员

    ……普及组的题目都做不出来……(:´д`)ゞ……再这样下去要退役了啊…… 不过不管怎样感觉这题还是蛮好的,也要记录一下下~ 我们注意到数据的范围,n 是 1e5, 又有 1e5组询问,暴力大概是 \( ...