Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("maimuta.in");
- ofstream fout("maimuta.out");
- int maxim = 0;
- int n, m, mi, mj;
- int a[30][30];
- char rez[500];
- bitset < 30 > viz[30];
- void BT(int i, int j, int c = 0)
- {
- cout << i << ' ' << j << ' ' << c << '\n';
- if (i == 1 || j == 1)
- {
- if (c < maxim)
- {
- fout.close();
- fout.open("maimuta.out");
- while (i < c)
- {
- int a = 0;
- char car = rez[i];
- while (i < c && rez[i] == car)
- {
- i++;
- a++;
- }
- fout << a << car;
- }
- maxim = c;
- }
- else if (c == maxim)
- {
- while (i < c)
- {
- int a = 0;
- char car = rez[i];
- while (i < c && rez[i] == car)
- {
- i++;
- a++;
- }
- fout << a << car;
- }
- }
- }
- else
- {
- if (!a[i - 1][j] && !viz[i - 1][j] && i > 1)
- {
- viz[i - 1][j] = 1;
- rez[c] = 'N';
- BT(i - 1, j, c + 1);
- viz[i - 1][j] = 0;
- }
- if (!a[i][j + 1] && !viz[i - 1][j] && j < m)
- {
- viz[i - 1][j] = 1;
- rez[c] = 'E';
- BT(i, j + 1, c + 1);
- viz[i][j + 1] = 0;
- }
- if (!a[i + 1][j] && !viz[i + 1][j] && i < n)
- {
- viz[i + 1][j] = 1;
- rez[c] = 'S';
- BT(i + 1, j, c + 1);
- viz[i + 1][j] = 0;
- }
- if (!a[i][j - 1] && !viz[i][j - 1] && j > 0)
- {
- viz[i][j - 1] = 1;
- rez[c] = 'V';
- BT(i, j - 1, c + 1);
- viz[i][j - 1] = 0;
- }
- }
- }
- int main()
- {
- fin >> n >> m >> mi >> mj;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- fin >> a[i][j];
- viz[mi][mj] = 1;
- BT(mi, mj);
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement