题目描述
景驰公司自成立伊始,公司便将“推动智能交通的发展,让人类的出行更安全,更高效,更经济,更舒适”作为公司使命,通过产业融合、建设智能汽车出行行业的方式,打造“利国、利民、利公司、利个人”的无人驾驶出行系统。公司的愿景是成为中国第一、世界一流的智能出行公司。
有一天,景驰公司的工程师在真车上做测试。 景驰公司的试验车上面有一个奇怪的图案,这是一个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 |+| +-+
备注:
左旋即逆时针旋转,右旋即顺时针旋转 -通过一次左旋或右旋会变成| |通过一次左旋或右旋会变成-
方法:旋转后有四种类型,将每种类型都列出来
#include <stdio.h>
#include <math.h>
#include <iostream>
using
namespace
std;
int
main()
{
char
ch[50][50] , wq[50][50];
int
n, m , T;
scanf
(
"%d"
, &T);
while
(T--)
{
string s;
int
ans = 0 ;
int
a = 0 , b = -1;
scanf
(
"%d %d"
, &n , &m);
for
(
int
i = 0 ; i < n ; i++)
{
b++;
for
(
int
j = 0 ; j < m ; j++)
{
cin >> ch[i][j];
wq[a][b] = ch[i][j];
a++;
}
a = 0;
}
cin >> s;
for
(
int
i = 0 ; i < s.length() ; i++)
{
if
(s[i] ==
'L'
)
{
ans--;
}
else
if
(s[i] ==
'R'
)
{
ans++;
}
}
if
(ans < 0)
{
ans+=400;
ans = ans %4;
}
else
{
ans = ans%4;
}
ans = ans +
'0'
;
// printf("ans = %c\n" , ans);
//cin >> ans;
//ans += '0';
switch
(ans)
{
case
'0'
:
printf
(
"%d %d\n"
, n , m);
for
(
int
i = 0 ; i < n ; i++)
{
for
(
int
j = 0 ; j < m ; j++)
{
cout << ch[i][j];
}
cout << endl;
}
break
;
case
'1'
:
printf
(
"%d %d\n"
, m , n);
for
(
int
i = 0 ; i < m; i++)
{
for
(
int
j = n-1 ; j >= 0; j--)
{
if
(wq[i][j] ==
'|'
)
{
wq[i][j] =
'-'
;
}
else
if
(wq[i][j] ==
'-'
)
{
wq[i][j] =
'|'
;
}
cout << wq[i][j];
}
cout << endl;
}
break
;
case
'2'
:
printf
(
"%d %d\n"
, n , m);
for
(
int
i = n-1 ; i >= 0 ; i--)
{
for
(
int
j = m - 1 ; j >= 0; j--)
{
cout << ch[i][j];
}
cout << endl;
}
break
;
case
'3'
:
printf
(
"%d %d\n"
, m , n);
for
(
int
i = m-1 ; i >= 0; i--)
{
for
(
int
j = 0 ; j < n; j++)
{
if
(wq[i][j] ==
'|'
)
{
wq[i][j] =
'-'
;
}
else
if
(wq[i][j] ==
'-'
)
{
wq[i][j] =
'|'
;
}
cout << wq[i][j];
}
cout << endl;
}
}
cout << endl;
}
return
0 ;
}