题目描述

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

操作有四种,描述如下:

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. 平板&Safari 开发tips

    css: *{ margin: 0; padding: 0;  /* 禁止用户点选网页内容 */ -webkit-touch-callout:none; -webkit-user-select:non ...

  2. JS filters-ul li简单过滤

    功能要求:在input中输入字母,显示ul li中匹配的元素,隐藏不匹配的 <!DOCTYPE html> <html> <head> <meta chars ...

  3. HTML标签,简单归纳

    列表标签 有序列表: <ol><li></li></ol> 无序列表: <ul><li></li></ul&g ...

  4. iOS Programming NSUserDefaults

    iOS Programming NSUserDefaults  When you start an app for the first time, it uses its factory settin ...

  5. RGB、YUV和YCbCr介绍【转】

    RGB: 就是常说的红(Red).绿(Green)和蓝(Blue),每个图像的像素点由RGB三个通道的值组成. YUV和YCbCr: YUV与RGB的转换: Y'= 0.299*R' + 0.587* ...

  6. swift 使用计算属性+结构管理内存

    class GooClass { deinit { print("aaaaaaaa") } var str = "gooClass" } struct GooS ...

  7. swift VTables

    VTables https://github.com/apple/swift/blob/master/docs/SIL.rst#vtables decl ::= sil-vtable sil-vtab ...

  8. 自动化测试selenium + request + 动态加载页面

    # demo01from selenium import webdriver from time import sleep bro = webdriver.Chrome(executable_path ...

  9. vue+webpack静态资源路径引用

    处理静态资产 你可能已经注意到,在项目结构中我们有两个静态资产目录:src/assets和static/.他们之间有什么区别? 要回答这个问题,我们首先需要了解Webpack如何处理静态资产.在*.v ...

  10. C#readonly 关键字与 const 关键字的区别

    1. const 字段只能在该字段的声明中初始化,readonly 字段可以在声明或构造函数中初始化.因此,根据所使用的构造函数,readonly 字段可能具有不同的值. 2. const 字段是编译 ...