列表

详情


NC16288. 第七道题

描述

为了确保学校新生赛的顺利举办,小X和小Y找到了相卜命妹子,请求她使用水晶球占卜一下新生赛的情况。从水晶球的预测来看,好一部分学弟学妹们会飞速解决了前六道题后,卡在了第七道题上面,为了使得学弟学妹们能够愉快的进行剩余的四个小时五十九分钟的编程而不过于无聊,于是小X灵机一动,追加了一个题目,好啦,以上就是题目背景。

题目是这样的,一张正方形卡片,上面有着9 x 9的格子,每个格子里都有一个符号。

现在我们定义7种操作:
1.将卡片顺时针旋转90°
2.将卡片顺时针旋转180°
3.将卡片顺时针旋转270°
4.将卡片沿着(5,1)->(5,9)这根轴向下翻转180°
5.将卡片沿着(1,5)->(9,5)这根轴向右翻转180°
6.将卡片沿着(1,1)->(9,9)这根对角线翻转180°
7.将卡片沿着(1,9)->(9,1)这根对角线翻转180°

卡片上有'M','W','3','E','|','-','.'一共七种符号
每次卡片通过一个操作的时候,不仅仅每个卡片格子的位置要变,对应方格上面的图形由于视角的变换也发生了相应的改变。

现在我们定义符号对应每一种操作之后的符号变换:

 (2,3操作对应的转换同多次1操作~~)

输入描述

首先输入一个9 x 9的字母矩阵,表示刚开始卡片的形状,然后第二行输入一个字符串(只包含1-7的数字,每个数字的大小对应的相应操作),代表一系列的操作(表示操作的字符串的长度|s|,1<=|s|<=100)。

输出描述

输出一个9 x 9的字母矩阵,表示所有操作执行完后卡片的形状。

示例1

输入:

MMMMMMMMM
WWWWWWWWW
|||||||||
---------
.........
.........
EEEEEEEEE
333333333
---------
1234567

输出:

---------
EEEEEEEEE
333333333
.........
.........
---------
|||||||||
MMMMMMMMM
WWWWWWWWW

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 5ms, 内存消耗: 456K, 提交时间: 2022-02-15 11:44:31

#include<iostream>
using namespace std;
string s[9];
int m[128];
string inis[7]={"3EWM-|.","WME3|-.","E3MW-|.","WM3E|-.","MWE3|-.","E3WM-|.","3EMW-|."};
void solve_pic(int op)
{
    string temp[9];
    for(int i=0;i<9;i++)
            temp[i]=s[i];
    for(int i=0;i<9;i++)
        for(int j=0;j<9;j++)
    if(op==1)
        s[i][j]=inis[op-1][m[temp[8-j][i]]];
    else if(op==2)
         s[i][j]=inis[op-1][m[temp[8-i][8-j]]];
    else if(op==3)
         s[i][j]=inis[op-1][m[temp[j][8-i]]];
    else if(op==4)
         s[i][j]=inis[op-1][m[temp[8-i][j]]];
    else if(op==5)
          s[i][j]=inis[op-1][m[temp[i][8-j]]];
    else if(op==6)
          s[i][j]=inis[op-1][m[temp[j][i]]];
    else if(op==7)
          s[i][j]=inis[op-1][m[temp[8-j][8-i]]];
    return ;
}

int main()
{
    m['W']=1;
    m['3']=2;
    m['E']=3;
    m['|']=4;
    m['-']=5;
    m['.']=6;
    for(int i=0;i<9;i++)
        cin>>s[i];
    string q;
    cin>>q;
    int n=(int)q.size();
    for(int i=0;i<n;i++)
        solve_pic(q[i]-'0');
    for(int i=0;i<9;i++)
        cout<<s[i]<<endl;
    return 0;
}

上一题