【作业】Mental Rotation (模拟)
题目链接:https://vjudge.net/contest/345791#problem/L
【问题描述】
Mental rotation is a difficult thing to master. Mental rotation is the ability to imagine in your mind how an object would look like from a viewer's side if you were to rotate it in a particular direction. It is something very important for engineers to learn and master, especially if you are required to do engineering drawing. There are many stages to these mental rotation tasks. We will approach a simple rotation task in this problem.
If you are given the following square -
After rotating it to the right once, it will look like the following -
After rotating it to the left once, it will look like the following -
For this problem you will be given an initial square of size n and a list of rotations to perform.
Your task is to output the final representation of the square after performing all the rotation.
输入:
The first line of input contains an integer NN (1 ≤ N ≤ 1000). and a string containing a combination of ′L′ and ′R′′. Where ′L′ means left rotation and ′R′ means right rotation. Length of the string will not exceed 100. Starting from the second line, the following N line each will contain NN of the following characters (>, <, ∨, ∧ or .). Empty space is indicated by a '.' (dot).
输出:
The output should be N lines, each containing N characters representing the final representation of the square after all the rotation. For ∨ and ∧ use v (small v) and Shift+6 respectively.
样例输入:
3 R
>v>
...
<^<
3 L
>v>
...
<^<
3 LL
>v>
...
<^< 样例输出:
^.v
>.<
^.v
^.v
>.<
^.v
>v>
...
<^< 试题分析:
这是一道简单的模拟题,我们可以写出向左向右翻转的函数,然后直接遍历字符串即可。但这样会超时,可以进行优化,翻转周期为4,并且可以将左转转化为右转。
代码如下:
#include<stdio.h>
#include<map>
#include<string.h>
const int MAXN = ;
using namespace std; int n;
char s[MAXN], ans[MAXN][MAXN], str[MAXN][MAXN];
map<char, char> mp; void move()
{
for(int col = ; col <= n; col ++)
for(int row = n; row >= ; row --)
ans[col][n - row + ] = mp[str[row][col]];
for(int i = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
str[i][j] = ans[i][j];
} int main()
{
mp['>'] = 'v', mp['^'] = '>', mp['v'] = '<', mp['<'] = '^', mp['.'] = '.'; scanf("%d%s", &n, s);
getchar();
for(int i = ; i <= n; i ++)
scanf("%s", str[i] + );
for(int i = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
ans[i][j] = str[i][j];
int len = strlen(s);
int rnum = , lnum = ;
for(int i = ; i < len; i ++)
{
if(s[i] == 'R')
rnum ++;
else
lnum ++;
}
if(rnum >= lnum)
{
rnum -= lnum;
rnum %= ;
}
else
{
lnum -= rnum;
lnum %= ;
rnum = - lnum;
rnum %= ;
}
for(int i = ; i <= rnum; i ++)
move();
for(int i = ; i <= n; i ++)
printf("%s\n", ans[i] + );
return ;
}
【作业】Mental Rotation (模拟)的更多相关文章
- C#基础第三天-作业-集合-冒泡排序-模拟名片
1.名片:用两种集合(ArrayList/List<>)去输出余下信息.身份证号码,电话号码,性别,姓名,身高,年龄,体重.需求:根据 姓名 去查询某一行数据.如果集合中不存在提示(“自定 ...
- python开发基础作业01:模拟登陆系统
随老男孩学习python mark 作业要求及提示:编写登录接口 ''' 练习程序:编写登录接口 1. 输入用户名和密码 2. 认证成功后显示欢迎信息 3. 输错三次后锁定 输入三次后退出,下次同样用 ...
- 从零开始学Python04作业思路:模拟ATM电子银行
标签(空格分隔):Python 一,程序文件说明 程序分为5个组成部分 bin:放置Python程序的启动接口文件 通过Python命令启动文件夹内文件即正常执行Python程序 例如:ATM_sta ...
- 作业三:模拟 mysql 进行增删改查
# !/usr/bin/env python3 # _*_coding:utf-8_*_ def help_sql(cmd): if cmd in func_dic.keys(): print('{} ...
- C#基础第三天-作业答案-集合-冒泡排序-模拟名片
.冒泡排序 Console.WriteLine("对集合里的数进行排序,请输入第一个数:"); int a = int.Parse(Console.ReadLine()); Con ...
- python作业模拟计算器开发(第五周)
作业需求: 模拟计算器开发: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...
- day4作业模拟实现一个ATM + 购物商城程序
作业需求: 模拟实现一个ATM + 购物商城程序 1.额度 15000或自定义: 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账: 3.可以提现,手续费5%: 4.每月22号出账单,每月10 ...
- SQL Server代理(10/12):使用代理账号运行作业
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,你查看了msdb库下用 ...
- SQL Server代理(9/12):理解作业和安全
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前一篇文章里,你学习了如何在S ...
随机推荐
- const关键字与数组、指针
目录 const关键字 const修饰数组 const修饰指针 用两个const修饰指针 @ 开始回顾C基础知识.C中使用指针是很危险的事情,一个不慎就会造成程序崩溃,因此对于传入函数的参数进行保护就 ...
- 理解 ES6 语法中 yield* 关键字的作用
在 ES6 中新增了生成器函数的语法,本文解释了与生成器函数有关的 yield* 关键字,及其使用场景. 描述 根据语法规范,yield* 的作用是代理 yield 表达式,将需要函数本身产生(yie ...
- java读取文件内容并输出到控制台,java中实现文件复制
public class TestFileInputStream { public static void main(String [] args) { //读取指定文件中内容,并在控制台输出 Fil ...
- 2019SDN上机第4次作业
一.作业要求 1.解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 2.启动并安装插件 3.用Python脚本搭建给定的拓扑,并连接OpenDayLight控制器 4. ...
- java.util之一:ArrayList
ArrayList是java中的线性结构的一种表示方法,在java中使用频率非常高,下面来一步一步分析其底层的实现.(JDK1.8) 一.构造函数 ArrayList的构造函数有三个,分别如下, 我们 ...
- php中函数 isset(), empty(), is_null() 的区别
NULL:当你在你的脚本中写下这样一行代码 $myvariable; //此处你想定义一个变量,但未赋值.会有Notice: Undefined variable echo $myvariable + ...
- Mono Features of cheat engine
If you attach to a process/game that uses mono, you should see a new "Mono" menu item on t ...
- 【json/regex】将嵌套对象生成的json文进行内部整形排序后再输出
下载地址:https://files.cnblogs.com/files/xiandedanteng/jsonformat20191126-2.zip 注意:本文仅为draft1版本,还有待完善. 先 ...
- 沃顿商学院的MBA课程
沃顿商学院的MBA课程,分为必修课和选修课两部分 (一)必修课: 1.领导力:团队合作和领导力的基础 2.营销学:营销管理 3.微观经济学:微观经济基础 4.经济学:管理经济学的高级话题 5.统计学: ...
- Gradle vs. Maven: Performance, Compatibility, Speed, & Builds
Gradle vs. Maven: Performance, Compatibility, Speed, & Buildshttps://stackify.com/gradle-vs-mave ...