链接:https://www.nowcoder.com/acm/contest/90/G
来源:牛客网

  • 1.题目描述
    景驰公司自成立伊始,公司便将“推动智能交通的发展,让人类的出行更安全,更高效,更经济,更舒适”作为公司使命,通过产业融合、建设智能汽车出行行业的方式,打造“利国、利民、利公司、利个人”的无人驾驶出行系统。公司的愿景是成为中国第一、世界一流的智能出行公司。
    有一天,景驰公司的工程师在真车上做测试。
    景驰公司的试验车上面有一个奇怪的图案,这是一个n*m的矩阵,这辆车可以到处开,每次可以左旋右旋,小明想知道转完之后的图案是怎么样的
    具体来说:有一个n*m的字符矩阵,只包含3种字符(‘+’‘-’,‘|’),通过一通乱旋之后变成什么样子?
    输入描述:
    第一行测试样例数T(0< T<=100)
    每个测试样例第一行两个正整数n,m(0< n,m<=30)
    接下来的n行是一个n*m的字符矩阵
    字符矩阵之后是一串只包含‘L’(左旋)和‘R’(右旋)的字符串,长度不超过1000
    每个样例间输出一个空行
    输出描述:
    第一行两个正整数n,m
    接下来的n行是一个n*m的字符矩阵
    每个样例后面输出一个空行
    示例1
    输入
    2
    2 3
    +-+
    |+|
    LLRRR
    3 2
    -+
    +|
    -+
    LLL
    输出
    3 2
    -+
    +|
    -+
    2 3
    |+|
    +-+
    备注:
    左旋即逆时针旋转,右旋即顺时针旋转
    -通过一次左旋或右旋会变成|
    |通过一次左旋或右旋会变成-
  • 2.题目分析
    直接模拟这个过程,首先假定一个旋转方向,然后以此为标准累计旋转次数(同向+1,反向-1),对4取模(一个方向转4次就和原来一样了),这样就只有四种可能性,转0,1,2,3次,把每种可能旋转的输出写出来就是答案,但是过程不那么容易,需要耐心。
  • 3.代码如下
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#include<algorithm>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 1000000000;
const int maxn = 100;
char str1[2000],s2[2000];
int dp[100005];
int T,n,count;
char ma[40][40];
char sss[1005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
memset(ma,0,sizeof(ma));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%s",ma[i]);
scanf("%s",sss);
int x=0;
for(int i=0;sss[i];i++)
{
if(sss[i]=='L') x++;
else x--;
x=(x+4)%4;
}
if(x==0)
{
printf("%d %d\n",n,m);
for(int i=0;i<n;i++)
printf("%s\n",ma[i]);
}
else if(x==1)
{
printf("%d %d\n",m,n);
for(int i=m-1;i>=0;i--)
{
for(int j=0;j<n;j++)
{
if(ma[j][i]=='-') printf("|");
else if(ma[j][i]=='|') printf("-");
else printf("%c",ma[j][i]);
}
printf("\n");
}
}
else if(x==2)
{
printf("%d %d\n",n,m);
for(int i=n-1;i>=0;i--)
{
for(int j=m-1;j>=0;j--)
{
printf("%c",ma[i][j]);
}
printf("\n");
}
}
else if(x==3)
{
printf("%d %d\n",m,n);
for(int j=0;j<m;j++)
{
for(int i=n-1;i>=0;i--)
{
if(ma[i][j]=='-') printf("|");
else if(ma[i][j]=='|') printf("-");
else printf("%c",ma[i][j]);
}
printf("\n");
}
}
printf("\n");
}
return 0;
}

最新文章

  1. EXCEL 对比数据是否重复
  2. request获取各种信息
  3. Maven提高篇系列之(一)——多模块 vs 继承
  4. IOS 中的KVO模式 观察者模式
  5. ps闪闪发光的字 教程+自我练习
  6. 转载:redis备份策略
  7. easyui源码翻译1.32--MenuButton(菜单按钮)
  8. Redhat 安装Oracle DBI和DBD
  9. javascript使用消息框
  10. Java生成文件
  11. POJ1639 - Picnic Planning
  12. 云摘录︱Word2Vec 作者Tomas Mikolov 的三篇代表作解析
  13. JavaWeb学习笔记九 过滤器、注解
  14. CentOS7系统操作httpd服务 - 开机启动/重启/查看状态
  15. BZOJ3945 : 无聊的邮递员
  16. Kafka文件存储机制那些事
  17. [LeetCode] Backtracking Template for (Subsets, Permutations, and Combination Sum)
  18. itertools.groupby()/itertools.compress() 笔记
  19. CSS-网站导航栏标题之间的分隔符
  20. jQuery 1.11 / 2.1 beta 版发布

热门文章

  1. [LeetCode]29. Divide Two Integers两数相除
  2. JDBC实现动态查询
  3. JavaScript中双叹号(!!)作用
  4. jQuery使用最广泛的javascript函数库
  5. css3制作有动画效果的面板
  6. iDempiere 使用指南 库存出入库研究
  7. SharePoint 2013 - User Custom Action
  8. select * from pet where species regexp &#39;^c&#39;;
  9. javascript typeof()的用法与运算符用法
  10. Flask入门模板Jinja2语法与函数(四)