XQ0014 @ 2024-10-28 21:54:49
用模拟的思路,但不知道问题是什么
#include<bits/stdc++.h>
using namespace std;
int mg[1009][1009];
int main(){
int t;
cin>>t;
for(int cs=1;cs<=t;cs++)
{
int x,y,d,m,n,k,ans=0;
cin>>n>>m>>k>>x>>y>>d;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char a;
cin>>a;
if(a=='.') mg[i][j]=1;
else mg[i][j]=0;
}
for(int i=1;i<=k;)
{
if(d==0){
i++,mg[x][y]=2;
if(mg[x][y+1]!=0) y++;
else d=(d+1)%4;
}
if(d==1){
i++,mg[x][y]=2;
if(mg[x+1][y]!=0) x++;
else d=(d+1)%4;
}
if(d==2){
i++,mg[x][y]=2;
if(mg[x][y-1]!=0) y--;
else d=(d+1)%4;
}
if(d==3){
i++,mg[x][y]=2;
if(mg[x-1][y]!=0) x--;
else d=(d+1)%4;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(mg[i][j]==2) ans++;
mg[i][j]=0;
}
cout<<ans<<endl;
}
return 0;
}
by bidongqu @ 2024-10-29 13:07:25
走过的地方还能走,把所有if(mg[ ][ ]!=0) x--改为if(mg[ ][ ]==1) x--
by XQ0014 @ 2024-11-03 15:23:58
@bidongqu 谢谢