#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求助大佬