洛谷 P2033 Chessboard Dance
题目描述
在棋盘上跳舞是件有意思的事情。现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向。求按一定操作后,棋盘的状态。
操作有四种,描述如下:
move n n是非负整数,表示你按目前所在方向前进n步,如果即将走出棋盘,则停止。如果面前有棋子,则将其向前推一步。
turn left 向左转90度
turn right 向右转90度
turn back 向后转
输入输出格式
输入格式:
输入前8行,每行8个字符,给出棋盘状态。“.”表示该格为空,字母表示棋子,不同字母表示不同的棋子。你所在位置用“^”、“<”、“>”、“v”四个字母中一个表示,分别表示你的方向上、左、右、下。
接下来有若干行,每行一个操作。以“#”结束。操作数不超过1000个。
输出格式:
输出8行,每行8个字符,表示经过一系列操作后棋盘和你的状态。表示方法同输入。
输入输出样例
......bA
.....^..
........
........
........
........
........
........
move 2
turn right
move 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的更多相关文章
- P2033 Chessboard Dance
题目描述 在棋盘上跳舞是件有意思的事情.现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向.求按一定操作后,棋盘的状态. 操作有四种,描述如下: move n n是非负整数,表示你按目前所 ...
- NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
随机推荐
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作 下一篇:Farseer.net轻量级ORM开源框 ...
- 整合Activiti Modeler到业务系统(或BPM平台)
http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html 1. 为什么要整合 Activiti 5.10版本把 ...
- Java Web数据库篇之MySQL特性
MySQL ExplainEXPLAIN 命令的输出内容大致如下: mysql> explain select * from user_info where id = 2\G********** ...
- .less css 使用 LESS 简化层叠样式表(CSS)的编写(另外一种css框架 sass)
使用 LESS 简化层叠样式表(CSS)的编写 https://less.bootcss.com/ Sass完全兼容所有版本的CSS https://gojs.net/latest/samples/f ...
- JS中二进制与十进制的相互转换
今天在做题目的时候遇到了需要十进制转换为二进制,这个我知道用toString可以,但是二进制转换为十进制我一下子就想不起来,网上搜了下,才知道是parseInt可以实现,特此记录下. 十进制转换为二进 ...
- ios远程推送和python版push server相关笔记
今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...
- thinkphp5生成二维码
1.运用composer下载拓展到vendor下 composer require aferrandini/phpqrcode 2.common.php 里面写生成二维码函数 <?php // ...
- 【thinking in java】ArrayList源码分析
简介 ArrayList底层是数组实现的,可以自增扩容的数组,此外它是非线程安全的,一般多用于单线程环境下(Vector是线程安全的,所以ArrayList 性能相对Vector 会好些) Array ...
- Django, one-to-many, many-to-many
1.定义关系 定义三个表,Publisher,Book,Author 一个作者有姓,有名及email地址. 出版商有名称,地址,所在城市.省,国家,网站. 书籍有书名和出版日期. 它有一个或多个作者( ...
- CSS九宫格样式
CSS .main>div { width: 14%; min-width: 160px; padding: 2%; height: 60px; border: 1px solid #f4f4f ...