WeTest.net全球能力開放:鍛造高品質產品,構建全球競爭力
阿新 • • 發佈:2021-11-18
#include <bits/stdc++.h> using namespace std; const int N = 10; char g[N][N]; //北,東,南,西 int dx[] = {-1, 0, 1, 0}; int dy[] = {0, 1, 0, -1}; int main() { //讀入地圖 for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) cin >> g[i][j]; //找到牛的位置,農夫的位置 int x1, y1, x2, y2; for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) { if (g[i][j] == 'C') x1 = i, y1 = j; if (g[i][j] == 'F') x2 = i, y2 = j; } //方向,0:北,1:東,2:南,3:西 int cd = 0, fd = 0; //牛的方向,農夫方向 //假設牛和 Farmer John 一開始的行動方向都是正北(即上) int cnt = 0; //幾分鐘 while (true) { //模擬牛轉90度方向+走一步 if (x1 + dx[cd] >= 10 || x1 + dx[cd] < 0 || y1 + dy[cd] >= 10 || y1 + dy[cd] < 0 || g[x1 + dx[cd]][y1 + dy[cd]] == '*') cd = (cd + 1) % 4; //換方向 else x1 += dx[cd], y1 += dy[cd];//走一步 //模擬農夫轉90度方向+走一步 if (x2 + dx[fd] >= 10 || x2 + dx[fd] < 0 || y2 + dy[fd] >= 10 || y2 + dy[fd] < 0 || g[x2 + dx[fd]][y2 + dy[fd]] == '*') fd = (fd + 1) % 4; else x2 += dx[fd], y2 += dy[fd]; //分鐘數增加 cnt++; //找到啦~ if (x1 == x2 && y1 == y2) { cout << cnt << endl; break; } //次數太多也找不到 if (cnt > 1000000) { cout << 0 << endl; break; } } return 0; }