T547385 贪吃蛇 题解
bilibili_daogu · · 题解
c++:
#include <bits/stdc++.h>
using namespace std;
int vis[2010][2010], mp[2010][2010], sn[4000010];
int m, p, n, x = 1, y = 1, ti, idx;
int main() {
scanf("%d %d %d", &m, &p, &n);
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++)
mp[i][j] = -1;
}
while (p--) {
int w, k, c;
scanf("%d %d %d", &w, &k, &c);
mp[w][k] = c;
}
vis[x][y] = ++ti;
sn[++idx] = 0;
for (int i = 1; i <= n; i++) {
char s[3];
scanf("%s", s);
if (s[0] == 'U') x--;
else if (s[0] == 'D') x++;
else if (s[0] == 'L') y--;
else if (s[0] == 'R') y++;
else {
int w, k;
scanf("%d %d", &w, &k);
if (!vis[w][k]) printf("-1\n");
else {
if (idx - ti + vis[w][k] > 0) printf("%d\n", sn[idx - ti + vis[w][k]]);
else printf("-1\n");
}
}
if (s[0] != 'Q') vis[x][y] = ++ti;
if (mp[x][y] != -1) {
sn[++idx] = mp[x][y];
mp[x][y] = -1;
}
}
return 0;
}