主题链接: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 (力模拟)的更多相关文章

  1. POJ 3344 &amp; HDU 2414 Chessboard Dance(模拟)

    题目链接: PKU:http://poj.org/problem? id=3344 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2414 Descrip ...

  2. HDU 2414 Chessboard Dance(模拟题,仅此纪念我的堕落)

    题目 模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!! #include<stdio.h> #include<string.h> #include ...

  3. 【HDOJ】2414 Chessboard Dance

    简单DFS. /* 2414 */ #include <cstdio> #include <cstring> #include <cstdlib> ; ][]; i ...

  4. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

  5. 洛谷 P2033 Chessboard Dance

    P2033 Chessboard Dance 题目描述 在棋盘上跳舞是件有意思的事情.现在给你一张国际象棋棋盘和棋盘上的一些子以及你的初始位置和方向.求按一定操作后,棋盘的状态. 操作有四种,描述如下 ...

  6. UVALive 4222 /HDU 2961 Dance 大模拟

    Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abid ...

  7. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))

    Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. 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 ...

随机推荐

  1. 完整的java字符串编码转换代码

    package book.String; import java.io.UnsupportedEncodingException; /** *//** * 转换字符串的编码 * @author joe ...

  2. 记一个Oracle存储过程错误

    下面一个存储过程是创建一个job,在5秒后更新一个表: create or replace PROCEDURE P_TEST AS jobno number; BEGIN dbms_job.submi ...

  3. 深入理解计算机系统之旅(四)处理器(CPU)的体系结构

    1.前言 处理器是很复杂的系统,它不是一蹴而就的,它是经过不断的升级.更新.设计之后的产物,而且如今还在保持着不断的更新. 处理器仅仅能运行一系列的指令,每条指令都仅仅是运行某个简单的操作,比方数字相 ...

  4. uva 10192 Vacation(最长公共子)

    uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...

  5. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  6. 手动安装英特尔® 凌动™ Android* x86 模拟器映像

    android的模拟器实在是太慢了,慢的让人欲仙欲死,欲罢不能.猛然发现我的电脑是intel的CPU,我勒个去,换x86模拟器.然后悲剧了,伟大的gfw 我要装sdk,我要研究android开发,到底 ...

  7. 编译hibernate源代码

    1)安装gradle,gradle是一个类似maven的构建工具 2)安装gitclient. 从网址 https://github.com/hibernate/hibernate-orm 上clon ...

  8. 安全扫描工具-AppScan

    AppScan主要作用是对页面进行安全扫描的工具

  9. iis6开户gzip 网站属性里面没有服务选项卡

    请注意一点,是直接在名为“网站”的文件夹上面右键选择属性,不是去点下面建立的某一个网站.开户GZIP是整台服务器上面的虚拟主机都同时开启的,不对针某一个单独网站. 开启Gzip具体步骤: 1. 在 & ...

  10. 有向图的邻接矩阵表示法(创建,DFS,BFS)

    package shiyan; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; publi ...