Bạn được gió 99 mời tham gia diễn đàn viết bài kiếm tiền VNO, bấm vào đây để đăng ký.
1 người đang xem
25 ❤︎ Bài viết: 28 Tìm chủ đề
3653 109
Link bài:

Thuật toán:


  • Ta dùng thuật toán quay lui để đánh dấu tất lan dần cả các ô mà ốc sên có thể đi đến.
  • Nếu các ô đó có rau thì ốc sên măm măm rồi đi tiếp.

Code:

Mã:
#include <bits/stdc++.h>
using namespace std;

int n, m, y, x, ans, a[107][107];

void doit(int i, int j){
    if (a[i][j] != 2 && a[i][j] != -1 && a[i][j] != 1){
        a[i][j] = 2;
        doit(i+1, j);
        doit(i-1, j);
        doit(i, j+1);
        doit(i, j-1);
    }
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    //freopen("ocse.inp", "r", stdin);
    //freopen("ocse.out", "w", stdout);
    cin >> n >> m >> y >> x;
    for (int i = 0; i <= n+1; i++) a[i][0] = a[i][m+1] = -1;
    for (int j = 1; j <= m; j++) a[0][j] = a[n+1][j] = -1;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++) cin >> a[i][j];
    doit(y, x);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            if (a[i][j] == 2) ans++;
    cout << ans;
    
    return 0;
}
 

Những người đang xem chủ đề này

Xu hướng nội dung

Back