大佬们,帮我看看嘛?#3#6过不去,太奇怪了想不通为啥是0,不是按照正北开始走吗
查看原帖
大佬们,帮我看看嘛?#3#6过不去,太奇怪了想不通为啥是0,不是按照正北开始走吗
340603
陈家小仙男楼主2020/11/26 19:18
#include<bits/stdc++.h>
using namespace std;
int main(){
	int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};
	char s[15][15];
	int Fi,Fj,Ci,Cj;
	int tempFi,tempFj,tempCi,tempCj;
	memset(s,'*',sizeof(s));
	for(int i = 1 ; i <= 10 ; i ++){
		for(int j = 1 ; j <= 10 ; j ++){
			cin >> s[i][j];
			if(s[i][j] == 'F'){
				tempFi = i;
				tempFj = j;
				s[i][j] = '.';
			}
			if(s[i][j] == 'C'){
				tempCi = i;
				tempCj = j;
				s[i][j] = '.';
			}
		}
	}
	int Min = 9999999;
	for(int i = 0 ; i < 4 ; i ++){
		for(int j = 0 ; j < 4 ; j ++){
			int dirtF = i;
			int dirtC = j;
			Fi = tempFi;
			Fj = tempFj;
			Ci = tempCi;
			Cj = tempCj;
			int t = 100000;
			int ans = 0;
			while(t --){
				if(Fi == Ci && Fj == Cj){
					cout << ans << endl;
					break;
				}
				if(s[Fi + dir[dirtF][0]][Fj + dir[dirtF][1]] == '*' || Fi + dir[dirtF][0] <= 0 || Fj + dir[dirtF][1] <= 0 || Fi + dir[dirtF][0] >= 11 || Fj + dir[dirtF][1] >= 11){
					dirtF ++;
					dirtF %= 4;
				}
				else{
					Fi += dir[dirtF][0];
					Fj += dir[dirtF][1];
				}
				
				if(s[Ci + dir[dirtC][0]][Cj + dir[dirtC][1]] == '*' || Ci + dir[dirtC][0] <= 0 || Cj + dir[dirtC][1] <= 0 || Ci + dir[dirtC][0] >= 11 || Cj + dir[dirtC][1] >= 11){
					dirtC ++;
					dirtC %= 4;
				}
				else{
					Ci += dir[dirtC][0];
					Cj += dir[dirtC][1];
				}
				ans ++;
			}
		}
	}
	cout << 0 << endl;
}
2020/11/26 19:18
加载中...