mirror of
https://git.sb/baoshuo/OI-codes.git
synced 2024-12-24 03:11:58 +00:00
parent
390e2c36f5
commit
1143dee585
52
S2OJ/1200/1200.cpp
Normal file
52
S2OJ/1200/1200.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using std::cin;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
const long long mod = 281474976710656;
|
||||
|
||||
int n;
|
||||
long long ans;
|
||||
char g[505][505];
|
||||
|
||||
void dfs1(int, int, std::vector<int>);
|
||||
long long dfs2(int, int, std::vector<int>, int, int, std::vector<int>);
|
||||
|
||||
int main() {
|
||||
cin >> n;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
cin >> g[i] + 1;
|
||||
}
|
||||
dfs1(1, 1, std::vector<int>());
|
||||
cout << ans << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dfs1(int x, int y, std::vector<int> s) {
|
||||
if (x < 1 || x > n || y < 1 || y > n) return;
|
||||
s.push_back(g[x][y] - 'A');
|
||||
if (x + y == n + 1) {
|
||||
ans = (ans + dfs2(n, n, std::vector<int>(), x, y, s)) % mod;
|
||||
return;
|
||||
}
|
||||
dfs1(x + 1, y, s);
|
||||
dfs1(x, y + 1, s);
|
||||
}
|
||||
|
||||
long long dfs2(
|
||||
int x,
|
||||
int y,
|
||||
std::vector<int> s,
|
||||
int lx,
|
||||
int ly,
|
||||
std::vector<int> t) {
|
||||
if (x < lx || x > n || y < ly || y > n) return 0;
|
||||
s.push_back(g[x][y] - 'A');
|
||||
long long res = 0;
|
||||
if (x == lx && y == ly && s == t) return 1;
|
||||
res += dfs2(x - 1, y, s, lx, ly, t);
|
||||
res += dfs2(x, y - 1, s, lx, ly, t);
|
||||
return res;
|
||||
}
|
Loading…
Reference in New Issue
Block a user