Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
120953 | 罗恩祥 | 猫和老鼠 | C++ | 通过 | 100 | 0 MS | 252 KB | 1326 | 2024-01-21 14:05:41 |
#include <bits/stdc++.h> using namespace std; char jz[11][11]; int main() { int n; cin >> n; while(n--) { int mx,my,cx,cy; for(int i = 1;i <= 10;i++) { for(int k = 1;k <= 10;k++) { cin >> jz[i][k]; if(jz[i][k] == 'M') { mx = i; my = k; } else if(jz[i][k] == 'C') { cx = i; cy = k; } } } int xx[5] = {-1,0,1,0}; int yy[5] = {0,1,0,-1}; int dm = 0,dc = 0; //北1 东2 南3 西 4 int step = 0; bool flag = 0; while(step < 100) { step++; if(cx == mx && cy == my) { flag = 1; cout << step-1 << endl; break; } int nx = xx[dm] + mx,ny = yy[dm] + my; if(jz[nx][ny] == '*' || nx == 0 || ny == 0 || nx == 11 || ny == 11) //转向 { dm += 1; dm %= 4; } else //否则位置移动 { mx += xx[dm]; my += yy[dm]; } int nx2 = xx[dc] + cx,ny2 = yy[dc] + cy; if(jz[nx2][ny2] == '*' || nx2 == 0 || ny2 == 0 || nx2 == 11 || ny2 == 11) { dc += 1; dc %= 4; } else { cx += xx[dc]; cy += yy[dc]; } } if(flag == 0) cout << -1 << endl; } /* 1 *...*..... ......*... ...*...*.. .......... ...*.C.... *.....*... ...*...... ..M......* ...*.*.... .*.*...... */ }