dalao来看看,我这超时了两个
查看原帖
dalao来看看,我这超时了两个
268811
画船听雨楼主2022/1/28 17:13
#include<iostream>
using namespace std;

struct MyStruct
{
	int dir = 0;
	string name;
	int r, c;
};


int main() {
	int i, j, minute = 0, flag1 = 0, flag2 = 0;
	char ttt[10][10];
	MyStruct famer, cattle, famer2, cattle2;
	for (i = 0; i < 10; i++)
		for (j = 0; j < 10; j++) {
			cin >> ttt[i][j];
			if (ttt[i][j] == 'F') {
				famer.r = i;
				famer.c = j;
				famer.name = "F";
			}
			else if (ttt[i][j] == 'C') {
				cattle.r = i;
				cattle.c = j;
				cattle.name = "C";
			}
		}
	famer2 = famer;
	cattle2 = cattle;
	while (famer.r != cattle.r || famer.c != cattle.c) {
		/*农民的路线图*/
		minute++;
		flag1 = 1;
		flag2 = 1;
		if (famer.dir == 0 && flag1) {/*人向上走*/
			if (ttt[famer.r - 1][famer.c] != '*' && famer.r != 0) {
				ttt[famer.r][famer.c] = '.';
				ttt[famer.r - 1][famer.c] = 'F';
				famer.r = famer.r - 1;
				flag1 = 0;
			}
			else {
				famer.dir++;
				famer.dir = famer.dir % 4;
				flag1 = 0;
			}
		}
		if (famer.dir == 1 && flag1) {/*人向右走*/
			if (ttt[famer.r][famer.c + 1] != '*' && famer.c != 9) {
				ttt[famer.r][famer.c] = '.';
				ttt[famer.r][famer.c + 1] = 'F';
				famer.c = famer.c + 1;
				flag1 = 0;
			}
			else {
				famer.dir++;
				famer.dir = famer.dir % 4;
				flag1 = 0;
			}
		}
		if (famer.dir == 2 && flag1) {/*人向下走*/
			if (ttt[famer.r + 1][famer.c] != '*' && famer.r != 9) {
				ttt[famer.r][famer.c] = '.';
				ttt[famer.r + 1][famer.c] = 'F';
				famer.r = famer.r + 1;
				flag1 = 0;
			}
			else {
				famer.dir++;
				famer.dir = famer.dir % 4;
				flag1 = 0;
			}
		}
		if (famer.dir == 3 && flag1) {/*人向左走*/
			if (ttt[famer.r][famer.c - 1] != '*' && famer.c != 0) {
				ttt[famer.r][famer.c] = '.';
				ttt[famer.r][famer.c - 1] = 'F';
				famer.c = famer.c - 1;
				flag1 = 0;
			}
			else {
				famer.dir++;
				famer.dir = famer.dir % 4;
				flag1 = 0;
			}
		}


		/*接下来是牛的路线*/

		if (cattle.dir == 0 && flag2) {/*牛向上走*/
			if (ttt[cattle.r - 1][cattle.c] != '*' && cattle.r != 0) {
				ttt[cattle.r][cattle.c] = '.';
				ttt[cattle.r - 1][cattle.c] = 'C';
				cattle.r--;
				flag2 = 0;
			}
			else {
				cattle.dir++;
				cattle.dir = cattle.dir % 4;
				flag2 = 0;
			}
		}
		if (cattle.dir == 1 && flag2) {/*牛向右走*/
			if (ttt[cattle.r][cattle.c + 1] != '*' && cattle.c != 9) {
				ttt[cattle.r][cattle.c] = '.';
				ttt[cattle.r][cattle.c + 1] = 'C';
				cattle.c++;
				flag2 = 0;
			}
			else {
				cattle.dir++;
				cattle.dir = cattle.dir % 4;
				flag2 = 0;
			}
		}
		if (cattle.dir == 2 && flag2) {/*牛向下走*/
			if (ttt[cattle.r + 1][cattle.c] != '*' && cattle.r != 9) {
				ttt[cattle.r][cattle.c] = '.';
				ttt[cattle.r + 1][cattle.c] = 'C';
				cattle.r++;
				flag2 = 0;
			}
			else {
				cattle.dir++;
				cattle.dir = cattle.dir % 4;
				flag2 = 0;
			}
		}
		if (cattle.dir == 3 && flag2) {/*牛向左走*/
			if (ttt[cattle.r][cattle.c - 1] != '*' && cattle.c != 0) {
				ttt[cattle.r][cattle.c] = '.';
				ttt[cattle.r][cattle.c - 1] = 'C';
				cattle.c--;
				flag2 = 0;
			}
			else {
				cattle.dir++;
				cattle.dir = cattle.dir % 4;
				flag2 = 0;
			}
		}

		//if (minute) {
		//	if (famer.c == famer2.c && famer.dir == famer2.dir && famer.r == famer.r)
		//		if (cattle.c == cattle2.c && cattle.dir == cattle2.dir && cattle.r == cattle2.r)
		//			break;
		//}
		if (minute == 160000)
			break;
	}
	if (famer.c == cattle.c && famer.r == cattle.r)
		cout << minute;
	else
		cout << 0;
	return 0;
}
2022/1/28 17:13
加载中...