P11228 [CSP-J 2024] 地图探险 , 70分求助QWQ
查看原帖
P11228 [CSP-J 2024] 地图探险 , 70分求助QWQ
1019665
gao13950259595楼主2024/10/27 19:58
#include <bits/stdc++.h>
using namespace std;
long long t , n , m , k;
long long x , y , d ;
long long dx[15] = { 0 , 1 , 0 , -1};
long long dy[15] = { 1 , 0 , -1 , 0};
long long cnt [1005][1005];
string s[1005];
bool in(long long x , long long y ){
	return !(x < 0 || x >= n || y < 0 || y >= m );
}
void f(long long x , long long y ,long long k){
	if(k == 0){ 
		return ;
	}
	k--;
	long long tx = x + dx[d] , ty = y + dy[d];
	if(in(tx , ty) && s[tx][ty] == '.'){
		cnt[x][y] ++; 
		x += dx[d];
		y += dy[d];
		cnt[x][y] ++; 
	}else {
		d = (d + 1) % 4;
//		cout << d << ' ';
	}
	f(x , y ,k );
}
int main() {
//	freopen("dxplore.in", "r", stdin);
//	freopen("dxplore.out", "w", stdout);
	cin >> t ;
	while(t--){
		cin >> n >> m >> k; 
		cin >> x >> y >> d;
		x--;
		y--;
		for(int i = 0 ; i < n ;i++){
			cin >> s[i];
			
		}
//		cout << in(1,2);
		
		f(x , y , k);
		long long ans = 0;
		for(int i = 0 ; i < n ;i++){
			for(int j = 0 ; j < m ;j++){
//				cout << cnt [i][j];
				if(cnt[i][j] != 0 ){
					ans ++;
				}
			}
		}
		cout << ans << endl;
		for(int i = 0 ; i < n ;i++){
			for(int j = 0 ; j < m ;j++){
				cnt[i][j] = 0;
			}
		}
	}

	return 0;
}

#1 #2 #3 没过 求助

2024/10/27 19:58
加载中...