求助
查看原帖
求助
717476
Gaochenxi103_QWQ楼主2023/1/3 08:38
#include<bits/stdc++.h>
using namespace std;
char map_[9][9];
int ope_x[4]={0,0,-1,1};
int ope_y[4]={1,-1,0,0};
int f;
int s;
int player_x,player_y;
char player;
int dg_zb_s(int x,int s_)
{
    int y=player_y;
    for(int i=0;i<s_;i++)
    {
        if(x-1>1)
        {
            if(map_[x-1][y]=='.') 
            {
                map_[x-1][y]=map_[x][y];
                map_[x][y]='.';
                x-=1;
            }
            else
            {
                x-=1;
                dg_zb_s(x,1);
                map_[x][y]=map_[x+1][y];
                map_[x+1][y]='.';
            }
        }
        else
        {
            map_[1][y]=map_[x][y];
            map_[x][y]='.';
            return 1;
        }
    }   
    return x;
}
int dg_zb_x(int x,int s_)
{
    int y=player_y;
    for(int i=0;i<s_;i++)
    {
        if(x+1<8)
        {
            if(map_[x+1][y]=='.') 
            {
                map_[x+1][y]=map_[x][y];
                map_[x][y]='.';
                x+=1;
            }
            else
            {
                x+=1;
                dg_zb_x(x,1);
                map_[x][y]=map_[x-1][y];
                map_[x-1][y]='.';
            }
        }
        else
        {
            map_[8][y]=map_[x][y];
            map_[x][y]='.';
            return 8;
        }
    }   
    return x;
}

int dg_zb_z(int y,int s_)
{
    int x=player_x;
    for(int i=0;i<s_;i++)
    {
        if(y-1>1)
        {
            if(map_[x][y-1]=='.') 
            {
                map_[x][y-1]=map_[x][y];
                map_[x][y]='.';
                y-=1;
            }
            else
            {
                y-=1;
                dg_zb_s(y,1);
                map_[x][y]=map_[x][y+1];
                map_[x][y+1]='.';
            }
        }
        else
        {
            map_[x][1]=map_[x][y];
            map_[x][y]='.';
            return 1;
        }
    }
    return y;
}
int dg_zb_y(int y,int s_)
{
    int x=player_x;
    for(int i=0;i<s_;i++)
    {
        if(y+1<8)
        {
            if(map_[x][y+1]=='.') 
            {
                map_[x][y+1]=map_[x][y];
                map_[x][y]='.';
                y+=1;
            }
            else
            {
                y+=1;
                dg_zb_s(y,1);
                map_[x][y]=map_[x][y-1];
                map_[x][y-1]='.';
            }
        }
        else
        {
            map_[x][8]=map_[x][y];
            map_[x][y]='.';
            return 8;
        }
    }
    return y;
}
int main()
{
    for(int x=1;x<9;x++)
    {
        for(int y=1;y<9;y++)
        {
            cin>>map_[x][y];
            switch(map_[x][y])
            {
                case '^':player_x=x;player_y=y;f=0;player='^';break;
                case 'v':player_x=x;player_y=y;f=1;player='v';break;
                case '<':player_x=x;player_y=y;f=2;player='<';break;
                case '>':player_x=x;player_y=y;f=3;player='>';break;
            }
        }
    }
    string n;
    string n_;
    while(1)
    {
        getline(cin,n_);
        if(n_=="#") break;
        else n=n_;
        if(n[0]=='m')
        {
            int x_=player_x,y_=player_y;
            s = int(n[5])-int('0');
            switch(f)
            {
                case 0:player_x=dg_zb_s(player_x,s);break;
                case 2:player_x=dg_zb_x(player_x,s);break;
                case 3:player_y=dg_zb_z(player_y,s);break;
                case 1:player_y=dg_zb_y(player_y,s);break;
            }
            map_[x_][y_]='.';
            
        }
        else
        {
            if(n[0]=='t')
            {
                switch(n[5])
                {
                    case 'l':if(f>0){f-=1;}else{f=3;}break;
                    case 'r':if(f<3){f+=1;}else{f=0;};break;
                    case 'b':switch(f){case 0:f=2;break;case 1:f=3;break;case 2:f=0;break;case 3:f=1;break;}
                }
                switch(f)
                {
                    case 0:map_[player_x][player_y]='^';break;
                    case 1:map_[player_x][player_y]='>';break;
                    case 2:map_[player_x][player_y]='v';break;
                    case 3:map_[player_x][player_y]='<';break;
                }
            }
        }
    }
    
    switch(f)
    {
        case 0:map_[player_x][player_y]='^';break;
        case 1:map_[player_x][player_y]='>';break;
        case 2:map_[player_x][player_y]='v';break;
        case 3:map_[player_x][player_y]='<';break;
    }
    for(int x=1;x<9;x++) 
    {
        for(int y=1;y<9;y++)
        {
            cout<<map_[x][y];
        } 
        cout<<endl;
    }
    return 0;
}

做了好多天结果TLE求助大佬

2023/1/3 08:38
加载中...