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

题目

 

 

模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!!

 

 

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char mp[10][10];
int d=-1;//0shang,1xia,2zuo,3you
int x,y;//weizhi
int weizhi(int i,int j)
{
    if(mp[i][j]=='<'){x=i,y=j,d=2;return 1;}
    if(mp[i][j]=='>'){x=i,y=j,d=3;return 1;}
    if(mp[i][j]=='^'){x=i,y=j,d=0;return 1;}
    if(mp[i][j]=='v'){x=i,y=j,d=1;return 1;}
    return 0;
}
void fangxiang()
{
    if(d==0)mp[x][y]='^';
    else if(d==1)mp[x][y]='v';
    else if(d==2)mp[x][y]='<';
    else if(d==3)mp[x][y]='>';
}
void mov(int num)
{
    while(num--)
    {
        char fro=mp[x][y];
        if(d==0)
        {
            for(int i=x-1;i>=0;i--){
            if(mp[i][y]=='.'){mp[i][y]=fro;break;}
            else {
                char tmp=mp[i][y];
                mp[i][y]=fro;
                fro=tmp;
                }
            }
            if(x-1>=0)mp[x][y]='.',x--;
        }
        else if(d==1){

            for(int i=x+1;i<8;i++){
            if(mp[i][y]=='.'){mp[i][y]=fro;break;}
            else {
                char tmp=mp[i][y];
                mp[i][y]=fro;
                fro=tmp;
                }
            }
            if(x+1<8)mp[x][y]='.',x++;
        }
        else if(d==2){

            for(int i=y-1;i>=0;i--){
            if(mp[x][i]=='.'){mp[x][i]=fro;break;}
            else {
                char tmp=mp[x][i];
                mp[x][i]=fro;
                fro=tmp;
                }
            }
            if(y-1>=0)mp[x][y]='.',y--;
        }
        if(d==3){

            for(int i=y+1;i<8;i++){
            if(mp[x][i]=='.'){mp[x][i]=fro;break;}
            else {
                char tmp=mp[x][i];
                mp[x][i]=fro;
                fro=tmp;
                }
            }
            if(y+1<8)    mp[x][y]='.',y++;
        }
    }
}
void turnn(char cc)
{
    if(cc=='l')
    {
        if(d==0)d=2;
        else if(d==1)d=3;
        else if(d==2)d=1;
        else if(d==3)d=0;
    }
    else if(cc=='r')
    {
         if(d==0)d=3;
        else if(d==1)d=2;
        else if(d==2)d=0;
        else if(d==3)d=1;

    }
    else if(cc=='b')
    {
        if(d==0)d=1;
        else if(d==1)d=0;
        else if(d==2)d=3;
        else if(d==3)d=2;
    }
}
int main()
{
    while(scanf("%s",mp[0])!=EOF)
    {

        if(strcmp(mp[0],"--")==0)break;
        for(int i=1;i<8;i++)
        {
            scanf("%s",mp[i]);
        }
        int fl=0;
        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                if(weizhi(i,j)){fl=1;break;}
            }
            if(fl)break;
        }

        while(1)
        {
            char p[10];
            int movee;
            scanf("%s",p);
            if(strcmp(p,"#")==0)break;
            if(strcmp(p,"move")==0){
                scanf("%d",&movee);
                mov(movee);
            }
            else {
                scanf("%s",p);
                turnn(p[0]);
                fangxiang();
            }
        }
        for(int i=0;i<8;i++)
            printf("%s\n",mp[i]);
        
        printf("\n");
    }
    return 0;
}
View Code

 

posted @ 2014-10-03 21:44  laiba2004  Views(196)  Comments(0Edit  收藏  举报