7pts 求调悬关.
查看原帖
7pts 求调悬关.
609249
Walter_Fang楼主2024/8/10 10:04
#include<bits/stdc++.h>
using namespace std;
const int dx[4][2]={0,-1,-1,0,0,1,1,0};
int i,j,k,x,t,fx,fy;
char a[8][8],f[4]={'<','^','>','v'};
string op,turn;
void dfs(int x,int y){
	int sx=x+dx[t][0],sy=y+dx[t][1];
	if(sx<0||sx>7||sy<0||sy>7)return;
	if(a[sx][sy]!='.')dfs(sx,sy);
	a[sx][sy]=a[x][y];a[x][y]='.';fx=sx;fy=sy;
}
int main(){
	for(i=0;i<8;i++)
		for(j=0;j<8;j++){
			cin>>a[i][j];
			if(a[i][j]!='.'){
				fx=i,fy=j;
				for(k=0;k<4;k++)if(f[k]==a[i][j])t=k;
			}
		}
    while(cin>>op&&op!="#"){
		if(op[0]=='m'){
			cin>>x;
			for(i=0;i<x;i++)dfs(fx,fy);
		}
        else if(op[0]=='t'){
            cin>>turn;
			if(turn[0]=='l')t--;
			if(turn[0]=='r')t++;
			if(turn[0]=='b')t+=2;
			t%=4;
			if(t<0)t+=4;
        }
    }
	a[fx][fy]=f[t];
	for(i=0;i<8;i++,cout<<'\n')for(j=0;j<8;j++)cout<<a[i][j];
}
2024/8/10 10:04
加载中...