社区讨论
一只P11228的50分代码求调(CSPJ)
灌水区参与者 4已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m4jv88ra
- 此快照首次捕获于
- 2024/12/11 20:27 去年
- 此快照最后确认于
- 2025/11/04 13:00 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,-1,0,1};
int dy[4]={1,0,-1,0};
int dxy[1005][1005];
bool check(int n,int m,int x,int y)
{
if(x<1 || x>n || y<1 || y>m)
return 0;
if(dxy[x][y]==1)
return 0;
return 1;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
// memset(dxy,0,sizeof(dxy));
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
int x,y,d;
scanf("%d %d %d",&x,&y,&d);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char ch;
cin>>ch;
if(ch=='x')
dxy[i][j]=1;
else
dxy[i][j]=0;
}
int ans=1;
for(int i=1;i<=k;i++)
{
int dxx=x+dx[d];
int dyy=y+dy[d];
if(check(n,m,dxx,dyy))
{
x=dxx;
y=dyy;
ans++;
if(dxy[x][y]==2)
ans--;/**/
dxy[x][y]=2;
}
else
d=(d+1)%4;
}
printf("%d\n",ans);
}
return 0;
}
小号给关
回复
共 3 条回复,欢迎继续交流。
正在加载回复...