HDU 2414 Chessboard Dance (力模拟)
主题链接:HDU 2414 Chessboard Dance
意甲冠军:鉴于地图,>,<,^,v的方向,字母相当于是箱子,箱子能够推出边界。人保证不会做出边界。以下输入指令,依照指令走,输出结束时图的状态。
强行模拟一遍,注意以下给出的案例。
>t.p.p.p
...a....
........
...bfg.y
...c...
...d....
...e....
........
move 3
turn right
move 3
turn left
move 3
turn left
move 3
#
AC代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=20;
char mp[maxn][maxn];
queue<char> q;
int get_dir(int x,int y)
{
if(mp[x][y]=='^')
return 1;
else if(mp[x][y]=='>')
return 2;
else if(mp[x][y]=='v')
return 3;
else if(mp[x][y]=='<')
return 4;
} void out()
{
int i,j;
//printf("---------------------\n");
for(i=0; i<8; i++)
{
for(j=0; j<8; j++)
printf("%c",mp[i][j]);
printf("\n");
}
printf("\n");
} int main()
{
int i,j;
int dir,x,y;
char scr[20];
while(scanf("%s",mp[0])!=EOF)
{
if(strcmp(mp[0],"--")==0)
break;
while(!q.empty())
q.pop();
for(i=1; i<8; i++)
scanf("%s",mp[i]);
for(i=0; i<8; i++)
{
for(j=0; j<8; j++)
{
if(mp[i][j]=='>' || mp[i][j]=='^' || mp[i][j]=='<' || mp[i][j]=='v')
{
x=i;
y=j;
dir=get_dir(x,y);
break;
}
}
}
//out();
while(1)
{
scanf("%s",scr);
if(strcmp(scr,"#")==0)
break;
while(!q.empty())
q.pop();
if(strcmp(scr,"move")==0)
{
int ss;
scanf("%d",&ss);
if(dir==1)//向上
{
int temp;
if(ss>=x)//!走出边界
{
temp=x;
for(i=x;i>=0;i--)
mp[i][y]='.';
mp[x=0][y]='^';
}
else
{
mp[x][y]='.';
int temp=x-1;
int cont=ss;
while(cont--)
{
while(mp[temp][y]!='.' && temp>=0)
{
q.push(mp[temp][y]);
mp[temp][y]='.';
temp--;
}
temp--;
}
temp=x-ss;
mp[x=temp--][y]='^';
for(;temp>=0 && !q.empty();temp--)
{
mp[temp][y]=q.front();
q.pop();
}
}
//out();
}
else if(dir==2)//向右
{
int temp;
if(ss>=7-y)//!走出边界
{
temp=7-y;
for(i=y;i<8;i++)
mp[x][i]='.';
mp[x][y=7]='>';
}
else
{
mp[x][y]='.';
int temp=y+1;
int cont=ss;
while(cont--)
{
while(mp[x][temp]!='.' && temp<8)
{
q.push(mp[x][temp]);
mp[x][temp]='.';
temp++;
}
temp++;
}
temp=y+ss;
mp[x][y=temp++]='>';
for(;temp<8 && !q.empty();temp++)
{
mp[x][temp]=q.front();
q.pop();
}
}
//out();
}
else if(dir==3)//向下
{
int temp;
if(ss>=7-x)//!走出边界
{
temp=7-x;
for(i=x;i<8;i++)
mp[i][y]='.';
mp[x=7][y]='v';
}
else
{
mp[x][y]='.';
int temp=x+1;
int cont=ss;
while(cont--)
{
while(mp[temp][y]!='.' && temp<8)
{
q.push(mp[temp][y]);
mp[temp][y]='.';
temp++;
}
temp++;
}
temp=x+ss;
mp[x=temp++][y]='v';
for(;temp<8 && !q.empty();temp++)
{
mp[temp][y]=q.front();
q.pop();
}
}
//out();
}
else if(dir==4)//向左
{
int temp;
if(ss>=y)//!走出边界
{
temp=y;
for(i=y;i>=0;i--)
mp[x][i]='.';
mp[x][y=0]='<';
}
else
{
mp[x][y]='.';
int temp=y-1;
int cont=ss;
while(cont--)
{
while(mp[x][temp]!='.' && temp>=0)
{
q.push(mp[x][temp]);
mp[x][temp]='.';
temp--;
}
temp--;
}
temp=y-ss;
mp[x][y=temp--]='<';
for(;temp>=0 && !q.empty();temp--)
{
mp[x][temp]=q.front();
q.pop();
}
}
//out();
}
}
else if(strcmp(scr,"turn")==0)
{
char cc[20];
scanf("%s",cc);
if(strcmp(cc,"left")==0)
{
if(dir==1) dir=4,mp[x][y]='<';
else if(dir==2) dir=1,mp[x][y]='^';
else if(dir==3) dir=2,mp[x][y]='>';
else if(dir==4) dir=3,mp[x][y]='v';
}
else if(strcmp(cc,"right")==0)
{
if(dir==1) dir=2,mp[x][y]='>';
else if(dir==2) dir=3,mp[x][y]='v';
else if(dir==3) dir=4,mp[x][y]='<';
else if(dir==4) dir=1,mp[x][y]='^';
}
else if(strcmp(cc,"back")==0)
{
if(dir==1) dir=3,mp[x][y]='v';
else if(dir==2) dir=4,mp[x][y]='<';
else if(dir==3) dir=1,mp[x][y]='^';
else if(dir==4) dir=2,mp[x][y]='>';
}
//out();
}
}
out();
}
return 0;
}
/*
.....c..
.p..A..t
D..>T.Pr
....aP.P
p.d.C...
.....p.R
........
........
move 5 .....c..
.p..A..t
D..>T.Pr
....aP.P
p.d.C...
.....p.R
........
........
move 1
turn left
move 99
turn back
move 6
#
.....c..
.p.....t
D....TPr
.....P.P
p.d.C...
.....p.R
....v...
....a... >t.p.p.p
...a....
........
...bfg.y
...c...
...d....
...e....
........
move 3
turn right
move 3
turn left
move 3
turn left
move 3
# .>ta.cb.
........
........
........
........
........
........
........
move 3
#
*/
版权声明:本文博主原创文章,博客,未经同意不得转载。
HDU 2414 Chessboard Dance (力模拟)的更多相关文章
- POJ 3344 & HDU 2414 Chessboard Dance(模拟)
题目链接: PKU:http://poj.org/problem? id=3344 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2414 Descrip ...
- HDU 2414 Chessboard Dance(模拟题,仅此纪念我的堕落)
题目 模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!! #include<stdio.h> #include<string.h> #include ...
- 【HDOJ】2414 Chessboard Dance
简单DFS. /* 2414 */ #include <cstdio> #include <cstring> #include <cstdlib> ; ][]; i ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- 洛谷 P2033 Chessboard Dance
P2033 Chessboard Dance 题目描述 在棋盘上跳舞是件有意思的事情.现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向.求按一定操作后,棋盘的状态. 操作有四种,描述如下 ...
- UVALive 4222 /HDU 2961 Dance 大模拟
Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abid ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 5873 Football Games 【模拟】 (2016 ACM/ICPC Asia Regional Dalian Online)
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
随机推荐
- IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
客户总体情况:2年.Net开发经验,2014年刚刚转Java半年.对Java的若干问题不是非常清楚,仅仅是对JSP/Servlet/JavaBean Spring.SpringMVC.Mybatis有 ...
- 项目构建之maven篇:2.HelloWorld项目构建过程
文件结构说明: 项目构建生命周期: 清理 编译 測试 打包 执行 部署 清理与编译 hello\pom.xml POM:Project Object Model,项目对象模型 pom.xml与ant的 ...
- ByteBuffer的allocate和allocateDirect
在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类.ByteBuffer提供了两种静态实例方式: public stati ...
- ArrayList实现借壳
随着Collections工具: import java.util.ArrayList; import java.util.Collections; public class TTEST { publ ...
- Android在ExpandableListView控制的基本使用
在本文中,Demo为了展示Android在ExpandableListView用途管制.如该组/儿子ListView绑定数据源. 直接上代码例如以下: 程序结构图: layout文件夹下的 main. ...
- Oracle学习(十四):管理用户安全性
--用户(user) SQL> --创建一个名为 grace password是password 的用户,新用户没有不论什么权限 SQL> create user grace identi ...
- (二十)unity4.6得知Ugui中国文献-------另外-InputModules
大家好.我是太阳广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitym ...
- Microsoft Visual C++ Runtime Library Runtime Error解决的方式
打开浏览器时,出现Microsoft Visual C++ Runtime Library Runtime Error错误,初步预计是软件冲突,可能有多种出错的方式,我的是浏览器自己主动关闭. 一. ...
- CSS设计指南之定位
原文:CSS设计指南之定位 CSS布局的核心是position属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位.position属性有4个值:static.relative.ab ...
- 【Android进阶】获取Android软件的版本信息
PackageInfo pinfo = getPackageManager().getPackageInfo("com.andbase", PackageManager.GET_C ...