csu oj 1341 string and arrays
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
Hint
这个题目主要练习如何读入字符串,以及对数组的使用。
初始矩阵直接用读入字符串的方式读入就可以了,但是每个操作要如何读入呢?先用getchar(x)或者scanf(“%c”, &x)读入一个字符,然后再根据读入的字符判断是否要再读入两个整数?
其实getchar(x)或者scanf(“%c”, &x)有的时候很令人头疼(也许只有你亲自尝试过才能体会到), 因为他不仅可以读入一个字母,也可以读入空格、换行等等,因此如果我们不细加控制的话,scanf(“%c”, &x)很可能读到的未必是我们想要的那个字符。但scanf(“%s”, s)就不一样了,会忽略掉空格、换行等等,就像我们使用scanf(“%d”, &x)读整数那样。因此即使只有一个字母,我们也更推荐使用scanf(“%s”, s)的形式去读入,然后s[0]自然就是那个字符了。
这个题目具体要怎么做呢?看似直接模拟两种操作就好了,打印字符最简单了,而旋转矩阵也不是很麻烦,不过可能要借助一个“中间矩阵”来完成旋转更好一些。但问题来了,如果每个R我们都进行旋转的话,实际上代价是很大的,对于这个题目而言会超时。也许你会机智地想到把相邻的R操作合并成一个,这样代价会小一点,是的,但是这样并不能解决根本问题,比如R和P是交替出现的。
但其实我们可以做到只要旋转3次矩阵,你想到了吗?
或者也许我们根本没必要按题意来去旋转矩阵?是否可以直接找到要打印的字符在初始矩阵中的位置呢?
最后注意相邻两组测试数据之间要打印一个空行,就像在“A Sample Problem”中说的那样,OJ对于输出的格式要求是很严格的。
同样的,我会给出示例代码,如果你觉得编写代码的时候有些困难的话可以参考一下示例代码,但最后一定要按自己的思路一气呵成一份完整的代码并获得“Accept”哟~
- #include <iostream>
- #include<cstdio>
- #include<cstring>
- #include<string>
- using namespace std;
- const int maxn=+;
- char a[maxn][maxn];
- char solve(int n,int x,int y,int cnt)
- {
- if(cnt==) return a[x][y];
- if(cnt==) return a[y][n+-x];
- if(cnt==) return a[n+-x][n+-y];
- if(cnt==) return a[n+-y][x];
- }
- int main()
- {
- int t,n,m,i;
- char c[];
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d",&n);
- for(i=;i<=n;i++)
- scanf("%s",a[i]+);//注意这里,指针加一
- scanf("%d",&m);
- int cnt=;
- int x,y;
- while(m--)
- {
- scanf("%s",c);
- if(c[]=='R') cnt++;
- else
- {
- scanf("%d%d",&x,&y);
- printf("%c\n",solve(n,x,y,cnt%));
- }
- }
- if(t) printf("\n");
- }
- return ;
- }
上面这是c语言代码,c语言的输入输出
下面给出C++代码
个人认为C++的输入输出更加简洁
- #include <iostream>
- using namespace std;
- char c[][];
- int t, n, m, sum, x, y;
- char f(int n,int x,int y,int sum)
- {
- if (sum == )return c[x][y];
- if (sum == )return c[y][n+-x];
- if (sum == )return c[n + - x][n + - y];
- if (sum == )return c[n+-y][x];
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- char ch;
- cin >> t;
- while (t--)
- {
- cin >> n;
- for (int i = ; i <= n; i++)
- for (int j = ; j <= n; j++)
- cin >> c[i][j];
- cin >> m ;
- sum = ;
- while (m--)
- {
- cin >> ch;
- if (ch == 'R')sum++;
- else
- {
- cin >> x >> y;
- cout << f(n,x,y,sum%) << endl;
- }
- }
- cout << endl;
- }
- return ;
- }
*/
/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int main()
{
char s[6];
// for(int i=0;i<6;i++){
// scanf("%c",&s[i]);
// }
// scanf("%s",s);
cin>>s;
printf("%s",s);
cout<<s;
return 0;
//scanf("%c")则可以读取输入空格符和换行符。当读入的字符串小于定义的空间时,即使输入换行符,也不会结束输入,只有输入的超过空间时,输入换行符才会停止输入
// 如果输入的最后一个空间恰好是换行,则停止输入;
csu oj 1341 string and arrays的更多相关文章
- CSUOJ 1341 String and Arrays
Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,--,第N行,从左至右依次记为第1列,第2列,--,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: ...
- 中南oj String and Arrays
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?cid=2072&pid=1 Problem B: String and Arrays T ...
- API(Scanner、Random、ArrayList、String、Arrays、Math)
Scanner import java.util.Scanner; /* public int nextInt(): to get a integer from keyboard public Str ...
- List<String> bikeList = Arrays.asList(bikeuuids);
最近项目中 List<String> bikeList = Arrays.asList(bikeuuids);报错 而且console里面没有特别有用的 bikeList.add(&qu ...
- java第4天:String static Arrays类,Math类
1 字符串的概述和特点 字符串一旦创建,是不可变的. 有双引号的就是字符串 *** 2 字符串的三种构造方法 2-1 第一种: 格式:String str = new String();| :-| 2 ...
- Water --- CSU 1550: Simple String
Simple String Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1550 Mean: 略. analy ...
- csu oj 1339: 最后一滴血
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339 1339: 最后一滴血 Time Limit: 1 Sec Memory Limit: 1 ...
- csu oj 1330 字符识别?
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1330 1330: 字符识别? Time Limit: 1 Sec Memory Limit: 1 ...
- Java学习笔记之——String和Arrays常用方法
一.String常用方法 1.subString(int beginIndex,int endIndex) 截取字符串 从beginIndex开始截取,截取endIndex-beginIndex的长度 ...
随机推荐
- dp专题练习
顺便开另外一篇放一些学过的各种dp dp总结:https://www.cnblogs.com/henry-1202/p/9194066.html 开坑先放15道题,后面慢慢补 目标50道题啦~~,目前 ...
- Python3 list sort排序
转自:https://blog.csdn.net/u010758410/article/details/79737498 当带排序列表的元素由多字段构成时,我们可以通过sorted(iterable ...
- Twitter开发
开发文档:https://developer.twitter.com/ the Twitter Developer Account Application 示例:https://wptweetboos ...
- 洛谷P1679神奇的四次方数--DP
原题请戳>>https://www.luogu.org/problem/show?pid=1679<< 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知 ...
- Latex: 保持参考文献大小写
参考: BibTeX loses capitals when creating .bbl file Latex: 保持参考文献大小写 在排版时,BibTeX会根据参考文献的格式将除了title中的第一 ...
- 实现一个简单的flux
前言 众所周知,React跟Flux是一对好基友. 其中,市场流行的Flux有Redux,Mobx,Reflux. 其中,用法最简单的是Reflux. 其数据流思路如下: +---------+ +- ...
- hdu 6134 Battlestation Operational 莫比乌斯反演
Battlestation Operational Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- 屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
转载自:http://www.jianshu.com/p/c3387bcc4f6e 感谢博主的无私分享. 今天我给大家来讲讲这几个咱们经常打交道的词到底啥意思,以及他们之间到底有什么关系.这篇文章是我 ...
- Ubuntu18.04下搭建LAMP环境
一.Apache2 web 服务器的安装 : 可以先更新一下服务器 1.sudo apt-get update # 获取最新资源包 2.sudo apt-get upgrade ...
- art-template
art-template 输出 标准语法 {{value}} {{data.key}} {{data['key']}} {{a ? b : c}} {{a || b}} {{a + b}} 原始语法 ...