洛谷 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的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
随机推荐
- Android基础TOP3:线性布局的特点,常用属性,及权重值
线性布局是一种让视图水平或者垂直布排列的布局: 常用属性: androuid:orientation :表示布局方向 取值vertical表示垂直布局 取值horizontal表示水平布局 andro ...
- 掌握Spark机器学习库-01
第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...
- 洛谷 P1886 滑动窗口 (数据与其他网站不同。。)
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...
- leetcode_486. Predict the Winner
https://leetcode.com/problems/predict-the-winner/ 题目描述:给定一个非负的积分数组,玩家1可以从数组两端任取一个积分,接着玩家2执行同样的操作,直至积 ...
- 学生管理系统之Java+Mysql
主页面: 代码如下:package appstu.view; import java.awt.BorderLayout;import java.awt.Dimension;import java.aw ...
- Java8新特性 Stream流式思想(一)
遍历及过滤集合中的元素使用传统方式遍历及过滤集合中的元素package cn.com.zq.demo01.Stream.test01.Stream; import java.util.ArrayLis ...
- 「Python调试器」,快速定位各种疑难杂症!!
现在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要 ...
- 查看DNS、IP、Mac等
A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:\\>nslookup Default Server: ...
- js 发送短信验证码倒计时
html <input type="button" id="btn" value="免费获取验证码" onclick="se ...
- CentOS中一些基本的操作记录
1)切换到root su root 输入你的密码.我的是123