P11228 [CSP-J 2024] 地图探险 , 70分求助QWQ

P11228 [CSP-J 2024] 地图探险

gao13950259595 @ 2024-10-27 19:58:12

#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 没过

求助


by lmq308270 @ 2024-10-27 20:09:29

cnt[x][y]++;的位置写错了


|