题目描述

在棋盘上跳舞是件有意思的事情。现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向。求按一定操作后,棋盘的状态。

操作有四种,描述如下:

move n n是非负整数,表示你按目前所在方向前进n步,如果即将走出棋盘,则停止。如果面前有棋子,则将其向前推一步。

turn left 向左转90度

turn right 向右转90度

turn back 向后转

输入输出格式

输入格式:

输入前8行,每行8个字符,给出棋盘状态。“.”表示该格为空,字母表示棋子,不同字母表示不同的棋子。你所在位置用“^”、“<”、“>”、“v”四个字母中一个表示,分别表示你的方向上、左、右、下。

接下来有若干行,每行一个操作。以“#”结束。操作数不超过1000个。

输出格式:

输出8行,每行8个字符,表示经过一系列操作后棋盘和你的状态。表示方法同输入。

输入输出样例

输入样例#1: 复制

......bA
.....^..
........
........
........
........
........
........
move 2
turn right
move 1
#
输出样例#1: 复制

......>b
........
........
........
........
........
........
........
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int sx,sy,turn;
char map[][];
char s[];
int dx[]={,,,-,};
int dy[]={,-,,,};
void work(int num,int i){
char que,aim;
while(num){
num--;
if(sx+dx[i]<||sx+dx[i]>||sy+dy[i]<||sy+dy[i]>) break;
if(map[sx+dx[i]][sy+dy[i]]=='.'){
swap(map[sx][sy],map[sx+dx[i]][sy+dy[i]]);
sx+=dx[i];sy+=dy[i];
}
else{
que=map[sx+dx[i]][sy+dy[i]];
map[sx+dx[i]][sy+dy[i]]=map[sx][sy];
map[sx][sy]='.';sx+=dx[i];sy+=dy[i];
int x=sx,y=sy,f=;;
while(map[x+dx[i]][y+dy[i]]!='.'&&x+dx[i]>=&&x+dx[i]<=&&y+dy[i]>=&&y+dy[i]<=){
aim=map[x+dx[i]][y+dy[i]];
map[x+dx[i]][y+dy[i]]=que;
que=aim;f=;x+=dx[i];y+=dy[i];
}
map[x+dx[i]][y+dy[i]]=que;
}
}
}
int main(){
for(int i=;i<=;i++)
for(int j=;j<=;j++){
cin>>map[i][j];
if(map[i][j]=='<') turn=,sx=i,sy=j;
else if(map[i][j]=='>') turn=,sx=i,sy=j;
else if(map[i][j]=='^') turn=,sx=i,sy=j;
else if(map[i][j]=='v') turn=,sx=i,sy=j;
}
while(){
cin>>s;
if(s[]=='m'){
int pos;cin>>pos;
work(pos,turn);
}
else if(s[]=='t'){
char ss[];
cin>>ss;
if(ss[]=='l'){
if(turn==) turn=,map[sx][sy]='v';
else if(turn==) turn=,map[sx][sy]='^';
else if(turn==) turn=,map[sx][sy]='<';
else if(turn==) turn=,map[sx][sy]='>';
}
else if(ss[]=='r'){
if(turn==) turn=,map[sx][sy]='^';
else if(turn==) turn=,map[sx][sy]='v';
else if(turn==) turn=,map[sx][sy]='>';
else if(turn==) turn=,map[sx][sy]='<';
}
else if(ss[]=='b'){
if(turn==) turn=,map[sx][sy]='>';
else if(turn==) turn=,map[sx][sy]='<';
else if(turn==) turn=,map[sx][sy]='v';
else if(turn==) turn=,map[sx][sy]='^';
}
}
else if(s[]=='#'){
for(int i=;i<=;i++){
for(int j=;j<=;j++)
cout<<map[i][j];
cout<<endl;
}
return ;
}
}
}

100

 

洛谷 P2033 Chessboard Dance的更多相关文章

  1. P2033 Chessboard Dance

    题目描述 在棋盘上跳舞是件有意思的事情.现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向.求按一定操作后,棋盘的状态. 操作有四种,描述如下: move n n是非负整数,表示你按目前所 ...

  2. NOIP2017提高组Day2T3 列队 洛谷P3960 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  9. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

随机推荐

  1. android v7包的关联

    最近在使用到侧滑栏的时候,使用到了v7包下的actionbar,结果折腾了好久才折腾好,其实很简单的,操作步骤如下: 1. 在eclipse中导入v7包的工程 2. 在自己的工程中打开properti ...

  2. 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...

  3. A/B宣言

    作者:Dunne & Raby A B 肯定的  批判的 解决问题的 发现问题的 设计即流程 设计即方法 给出答案 问问题 为行业中服务 为社会服务 说明世界是怎样的 说明世界可能是怎样的 科 ...

  4. Node.js——网站访问一般流程

  5. 关于mapState和mapMutations和mapGetters 和mapActions辅助函数的用法及作用(四)-----mapActions

    介绍mapActions辅助函数: Action提交的是Mutation,不能够直接修改state中的状态,而Mutations是可以直接修改state中状态的:Action是支持异步操作的,而Mut ...

  6. iOS Cell异步图片加载优化,缓存机制详解

    最近研究了一下UITbleView中异步加载网络图片的问题,iOS应用经常会看到这种界面.一个tableView上显示一些标题.详情等内容,在加上一张图片.这里说一下这种思路. 为了防止图片多次下载, ...

  7. Python3.0 操作MySQL数据库执行SQL语句

    py3不支持MySQLdb,需要导入pymysql模块 # coding: utf-8 # Team : Quality Management Center # Author:Carson # Dat ...

  8. 谈谈JVM垃圾回收机制及垃圾回收算法

    一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理.由于有个垃圾回收机制 ...

  9. vue之props传值与单向数据流

    (1)组件通信 父组件向子组件传递数据.这个正向传递数据的过程就是通过props来实现的. 两者区别:props中声明的数据与组件data函数return返回的数据的主要区别就是props来自父级,而 ...

  10. Android突破64K限制

    1.添加依赖 android{ defaultConfig{ ... multiDexEnabled true ... } } dependencies{ compile 'com.android.s ...