社区讨论

一只P11228的50分代码求调(CSPJ)

灌水区参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m4jv88ra
此快照首次捕获于
2024/12/11 20:27
去年
此快照最后确认于
2025/11/04 13:00
4 个月前
查看原帖
rt
如你所见,我在CSP2024/j中以200的成绩获得了二等奖,但是我都不知道我赛时到底是怎么做的。
(如果有AH的代码包也可以)
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 条回复,欢迎继续交流。

正在加载回复...