哪个大神能我看看哪里错了
查看原帖
哪个大神能我看看哪里错了
1241536
hong__hua__miao楼主2024/10/30 22:27

谁能帮我看看在哪里错了 我看样例全对 可测试点一个没过

#include <bits/stdc++.h>
using namespace std;
char a[1005][1005];
bool vis[1005][1005];
int ans,n,m,k;
void dfs(int x,int y,int d,int k){
	if (vis[y][x] == 0){
	vis[y][x] = 1;
	ans++;
}
	if (k == 0) return ;
	if (d == 0){
	if (x + 1 > m || a[y][x + 1] == 'x') {dfs(x,y,(d + 1)%4,k - 1);}
	else{
	dfs(x + 1,y,d,k - 1);
}
}
	if (d == 1){
	if (y + 1 > n || a[y + 1][x] == 'x') {dfs(x,y,(d + 1)%4,k - 1);}
	else{
	dfs(x,y + 1,d,k - 1);
}
}
	if (d == 2){
	if (x - 1 <= 0 || a[y][x - 1] == 'x') {dfs(x,y,(d + 1)%4,k - 1);}
	else {
	dfs(x - 1,y,d,k - 1);
}
}
	if (d == 3){
	if (y - 1 <= 0 || a[y - 1][x] == 'x') {dfs(x,y,(d + 1)%4,k - 1);}
	else {
	dfs(x,y - 1,d,k - 1);
}
}
}
int main(){
	int t;
	cin >> t;
	while(t--){
	memset(vis,0,sizeof(vis));
	cin >> n >> m >> k;
	int x,y,d;
	cin >> x >> y >> d;
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= m; j++){
			cin >> a[i][j];
	}
}
	dfs(x,y,d,k);
	cout << ans << '\n';
	ans = 0;
}
	return 0;
}
2024/10/30 22:27
加载中...