前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵

第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵

作者头像
Enterprise_
发布2019-03-01 09:37:24
3270
发布2019-03-01 09:37:24
举报

链接: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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档