这个是错的,但是大家可以在这个的基础上修改,这是基本代码。

罗嘉为  •  1个月前


include <bits/stdc++.h>

using namespace std;

int main(){

int n, x, y, X, Y;
cin >> n;
for(int k = 0; k < n; k++){
	int m = 0, c = 0, count = 0;
	string a[10];
	for(int j = 0; j < 10; j++){
		cin >> a[j];
	}
	for(int i = 0; i < 10; i++){
		for(int j = 0; j < 10; j++){
			if(a[i][j] == 'C'){
				X = i;
				Y = j;
			} else if(a[i][j] == 'M'){
				x = i;
				y = j;
			}
		}
	}
	while(count < 100 && (X != x || Y != y)){
		if(m == 0 && x - 1 >= 0 && a[x - 1][y] != '*'){
			x--;
		} else if(m == 1 && y + 1 < 10 && a[x][y + 1] != '*'){
			y++;
		} else if(m == 2 && x + 1 < 10 && a[x + 1][y] != '*'){
			x++;
		} else if(m == 3 && y - 1 >= 0 && a[x][y - 1]  != '*'){
			y--;
		} else {
			m = (m++)% 4;
		}
		if(c == 0 && X - 1 >= 0 && a[X - 1][Y] != '*'){
			X--;
		} else if(c == 1 && Y + 1 < 10 && a[X][Y + 1] != '*'){
			Y++;
		} else if(c == 2 && X + 1 < 10 && a[X + 1][Y] != '*'){
			X++;
		} else if(c == 3 && Y - 1 >= 0 && a[X][Y - 1]  != '*'){
			Y--;
		} else {
			c = (c++) % 4;
		}
		count++;
	}
	cout << ((X == x && Y == y) ? count : -1) << endl;
}	
return 0;

}


评论: