Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- #define foreach(i, n) for(auto &i : (n))
- #define all(x) (x).begin(), (x).end()
- #define pb push_back
- #define mp make_pair
- #define ll long long
- const ll MOD = 1e9 + 7;
- const int inf = 1e9;
- const double pi = acos(-1.0);
- int n, m, k, ans = 0;
- >>void findword(vector<string> &mapp, vector<auto> &us, string req, int cur, int x, int y) {
- if (req.size()-1 == cur) {
- ans++;
- return;
- }
- cout << req << ' ' << cur << ' ' << x << ' ' << y << '\n';
- if (y-1 > 0 && !us[x][y-1] && mapp[x][y-1] == req[cur]) {
- us[x][y-1] = 1;
- findword(mapp, us, req, cur++, x, y-1);
- } else if (x-1 > 0 && !us[x-1][y] && mapp[x-1][y] == req[cur]) {
- us[x-1][y] = 1;
- findword(mapp, us, req, cur++, x-1, y);
- } else if (y+1 < m && !us[x][y+1] && mapp[x][y+1] == req[cur]) {
- us[x][y+1] = 1;
- findword(mapp, us, req, cur++, x, y+1);
- } else if (x+1 < n && !us[x+1][y] && mapp[x+1][y] == req[cur]) {
- us[x+1][y] = 1;
- findword(mapp, us, req, cur++, x+1, y);
- } else
- return;
- }
- >>void solve(vector <string> &mapp, vector<auto> &us, string req, int cur) {
- for (int i = 0; i < m; i++) {
- for (int j = 0; j < n; j++) {
- if (mapp[i][j] == req[cur]) {
- us[i][j] = 1;
- findword(mapp, us, req, cur++, i, j);
- }
- }
- }
- }
- int main() {
- cin >> m >> n >> k;
- vector <string> f(m), stu(k);
- for (int i = 0; i < m; i++) {
- cin >> f[i];
- }
- for (int i = 0; i < k; i++) {
- cin >> stu[i];
- }
- for (int i = 0; i < k; i++) {
- vector <vector<int>> used(m, vector<int> (n, 0));
- solve(f, used, stu[i], 0);
- }
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement