zoukankan      html  css  js  c++  java
  • 洛谷 P2033 Chessboard Dance

    题目描述

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

    操作有四种,描述如下:

    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[90][90];
    char s[100];
    int dx[5]={0,0,0,-1,1};
    int dy[5]={0,-1,1,0,0};
    void work(int num,int i){
        char que,aim;
        while(num){
            num--;
            if(sx+dx[i]<1||sx+dx[i]>8||sy+dy[i]<1||sy+dy[i]>8)    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=0;;
                while(map[x+dx[i]][y+dy[i]]!='.'&&x+dx[i]>=1&&x+dx[i]<=8&&y+dy[i]>=1&&y+dy[i]<=8){
                    aim=map[x+dx[i]][y+dy[i]];
                    map[x+dx[i]][y+dy[i]]=que;
                    que=aim;f=1;x+=dx[i];y+=dy[i];
                }
                map[x+dx[i]][y+dy[i]]=que;
            }
        }
    }
    int main(){
        for(int i=1;i<=8;i++)
            for(int j=1;j<=8;j++){
                cin>>map[i][j];
                if(map[i][j]=='<')    turn=1,sx=i,sy=j;
                else if(map[i][j]=='>')    turn=2,sx=i,sy=j;
                else if(map[i][j]=='^')    turn=3,sx=i,sy=j;
                else if(map[i][j]=='v')    turn=4,sx=i,sy=j; 
            }
        while(1){
            cin>>s;
            if(s[0]=='m'){
                int pos;cin>>pos;
                work(pos,turn);
            }
            else if(s[0]=='t'){
                char ss[10];
                cin>>ss;
                if(ss[0]=='l'){
                    if(turn==1)    turn=4,map[sx][sy]='v';
                    else if(turn==2)    turn=3,map[sx][sy]='^';
                    else if(turn==3)    turn=1,map[sx][sy]='<';
                    else if(turn==4)    turn=2,map[sx][sy]='>';
                }
                else if(ss[0]=='r'){
                    if(turn==1)    turn=3,map[sx][sy]='^';
                    else if(turn==2)    turn=4,map[sx][sy]='v';
                    else if(turn==3)    turn=2,map[sx][sy]='>';
                    else if(turn==4)    turn=1,map[sx][sy]='<';
                }
                else if(ss[0]=='b'){
                    if(turn==1)    turn=2,map[sx][sy]='>';
                    else if(turn==2)    turn=1,map[sx][sy]='<';
                    else if(turn==3)    turn=4,map[sx][sy]='v';
                    else if(turn==4)    turn=3,map[sx][sy]='^';
                }
            }
            else if(s[0]=='#'){
                for(int i=1;i<=8;i++){
                    for(int j=1;j<=8;j++)
                        cout<<map[i][j];
                    cout<<endl;
                }
                return 0;
            }
        }
    }
    100
     
  • 相关阅读:
    LINQ用于数据库访问的基本方法示例
    设计模式代码示例
    [文档].Altera PLL(锁相环)宏用户指导
    [文档]. Xilinx 编写有效的Testbenches
    [笔记].怎样正确插拔FPGA开发板的JTAG仿真器,如USBBlaster等?
    [连载计划][大家一起学FPGA/SOPC]
    [文档].Altera – SOPC Builder组件开发攻略
    [原创].图解一招搞定UCWEB@Nokia S60v5无法在博客园手机版发闪存的问题
    [文档].Altera – SOPC Builder存储子系统开发攻略
    [笔记].开发SOPC Buider中的自定义IP所必备资料
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/9722400.html
Copyright © 2011-2022 走看看