提交时间:2024-01-21 14:05:41

运行 ID: 120953

#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......* ...*.*.... .*.*...... */ }