只有10分,4个超时,5个错误。路过的大神帮忙看一下
查看原帖
只有10分,4个超时,5个错误。路过的大神帮忙看一下
763143
zhangguicheng楼主2024/6/11 22:40
#include<bits/stdc++.h>
using namespace std;
int n,m,r;
char a1[60][60],b1[60][60];
int a[1010];
int pan(int x11,int y11,int c)
{
	if(c==1&&a1[x11-1][y11]=='.'&&x11!=1)
	{	
//	cout<<x11-1<<" "<<y11<<endl;
	return 1;
	 } 
	if(c==2&&a1[x11+1][y11]=='.'&&x11!=n)
	{	
//	cout<<x11+1<<" "<<y11<<endl;
	return 1;
	 } 
	if(c==3&&a1[x11][y11-1]=='.'&&y11!=1)
	{	
//	cout<<x11<<" "<<y11-1<<endl;
	return 1;
	 } 
	if(c==4&&a1[x11][y11+1]=='.'&&y11!=m)
	{	
//	cout<<x11-1<<" "<<y11+1<<endl;
	return 1;
	 } 
	return 0;
}
void so(int x,int y,int c)
{
	if(c>r)
	{
		b1[x][y]='*';
		return ;
	} 
	while(1)
	{
		if(pan(x,y,a[c])==0) break;
		if(a[c]==1) x-=1;
		if(a[c]==2) x+=1;
		if(a[c]==3) y-=1;
		if(a[c]==4) y+=1;
		so(x,y,c+1);
	}
	return ;
}
int main()
{
	cin>>n>>m;
	int x1,y1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a1[i][j];
			b1[i][j]=a1[i][j];
			if(a1[i][j]=='*')
			{
				x1=i;y1=j;
				b1[i][j]='.';
				a1[i][j]='.';
			}
		} 
	}
	cin>>r;
	string aa;
	for(int i=1;i<=r;i++)
	{
		cin>>aa;
		if(aa[0]=='N')
		a[i]=1;
		if(aa[0]=='S')
		a[i]=2;
		if(aa[0]=='W')
		a[i]=3;
		if(aa[0]=='E')
		a[i]=4;
	}
	so(x1,y1,a[1]);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<b1[i][j];
		}
		cout<<endl;
	}
	return 0;
}
2024/6/11 22:40
加载中...