C++89分求助!
查看原帖
C++89分求助!
257454
wmxz楼主2022/11/1 11:30
#include <bits/stdc++.h>
using namespace std;
const int N = 10; bool jg[N + 10][N + 10], jga[N + 10][N + 10][4], jgb[N + 10][N + 10][4];
int xc, yc, xf, yf, zc, zf; bool dc, df;
int xx[4] = {-1, 0, 1, 0},
	yy[4] = { 0,+1, 0,-1};
//0北 1东 2南 3西 
int main(){
	for(int i = 1; i <= N; i++){
		for(int j = 1; j <= N; j++){
			char in;
			cin >> in;
			if(in == '.'){
				jg[i][j] = false;
			}else if(in == '*'){
				jg[i][j] = true;
			}else if(in == 'C'){
				xc = i; yc = j;
			}else if(in == 'F'){
				xf = i; yf = j;
			}
		}
	}
	for(int i = 0; i <= N + 1; i++){
		jg[i][0] = jg[0][i] = true;
		jg[i][N+1] = jg[N+1][i] = true; 
	} 
	//读入结束 
	jga[xc][yc][zc] = true;
	jgb[xf][yf][zf] = true;
	for(int m = 1; !(dc && df) ; m++){
		/*
		cout << m << endl;
		for(int i = 0; i <= N + 1; i++){
			for(int j = 0; j <= N + 1; j++){
				if(i == xc && j == yc){
					cout << 'C';
				}else if(i == xf && j == yf){
					cout << 'F'; 
				}else if(jg[i][j])
					cout << '*';
				else if(!jg[i][j]){
					if(jga[i][j][0] || jga[i][j][1] || jga[i][j][2] || jga[i][j][3])
						cout << 'c';
					else if(jgb[i][j][0] || jgb[i][j][1] || jgb[i][j][2] || jgb[i][j][3])
						cout << 'f';
					else cout << '.';
				}
			}cout << endl;
		} 
		*/
		int x1 = xc + xx[zc], y1 = yc + yy[zc];
		if(jg[x1][y1]){
			zc = (zc + 1) % 4;
		}else{
			xc = x1; yc = y1;
		}
		int x2 = xf + xx[zf], y2 = yf + yy[zf];
		if(jg[x2][y2]){
			zf = (zf + 1) % 4;
		}else{
			xf = x2; yf = y2;
		}
		if(xc == xf && yc == yf){
			cout << m << endl; return 0;
		} 
		if(jga[xc][yc][zc]){
			dc = true;
		}
		if(jgb[xf][yf][zf]){
			df = true;
		}
		jga[xc][yc][zc] = true;
		jgb[xf][yf][zf] = true;
	}
	cout << 0 << endl;
	return 0;
}
2022/11/1 11:30
加载中...