P15413 [CCC 2019 J4/S1] Flipper 翻转 题解

P15413 [CCC 2019 J4/S1] Flipper 翻转

题目描述

你在验光师那里等待时试图打发时间。你注意到有一个包含四个数字的网格:

111222
333444

你看到很多镜子和镜片,于是想知道如果对这个网格进行水平或垂直翻转,会发生什么变化。

  • 一次“水平翻转”(沿水平方向的中心线翻转)会变成:
333444
111222
  • 一次“垂直翻转”(沿垂直方向的中心线翻转)会变成:
222111
444333

你的任务是:在进行一系列水平和垂直翻转之后,确定最终网格的排列。

输入格式

输入为一行字符串,长度至少 111 个字符,最多 1,000,0001,000,0001,000,000 个字符。

每个字符是:

  • H——表示一次水平翻转
  • V——表示一次垂直翻转

对于 151515 分中的 888 分,输入长度最多 100010001000 个字符。

输出格式

输出最终网格的排列。

输出两行,每行两个整数,数字之间用一个空格分隔。

输入输出样例 #1

输入 #1

HV

输出 #1

4 3
2 1

输入输出样例 #2

输入 #2

VVHH

输出 #2

1 2
3 4

说明/提示

翻译来源:GPT 5.2。

思路

直接模拟即可。

代码见下

#include<bits/stdc++.h> 
using namespace std;
long long a[105][105];
string s;
int main(){
    cin>>s;
    a[1][1]=1;
    a[1][2]=2;
    a[2][1]=3;
    a[2][2]=4;
    for(int i=0;i<s.size();i++){
        if(s[i]=='H'){
            swap(a[1][1],a[2][1]);
            swap(a[1][2],a[2][2]);
        }
        else{
            swap(a[1][1],a[1][2]);
            swap(a[2][1],a[2][2]);
        }
    }
    cout<<a[1][1]<<" "<<a[1][2]<<endl;
    cout<<a[2][1]<<" "<<a[2][2]<<endl;
	return 0; 	
}
posted @ 2026-03-03 19:59  bz02_2023f2  阅读(3)  评论(0)    收藏  举报  来源