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[j] != 2 && a[j] != -1 && a[j] != 1){ a[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[0] = a[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[j]; doit(y, x); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[j] == 2) ans++; cout << ans; return 0; }