第四个节点,绕圈走没过,为什么?输出1279
查看原帖
第四个节点,绕圈走没过,为什么?输出1279
1501877
wuzebang2009楼主2024/11/3 22:23
#include<bits/stdc++.h>
//累死我了
using namespace std;
char a[12][12],flag_f=1,flag_c=1;
int fa,fb,ca,cb,t;
void walk_f(){
	if(flag_f%4==1){
		if(a[fa-1][fb]!='*') {fa--;}
		else flag_f++;
	}
	else if(flag_f%4==2){
		if(a[fa][fb+1]!='*') {fb++;}
		else flag_f++;
	}
	else if(flag_f%4==3){
		if(a[fa+1][fb]!='*') {fa++;}
		else flag_f++;
	}
	else if(flag_f%4==0){
		if(a[fa][fb-1]!='*') {fb--;}
		else flag_f++;
	}
}
void walk_c(){
	if(flag_c%4==1){
		if(a[ca-1][cb]!='*') {ca--;}
		else flag_c++;
	}
	else if(flag_c%4==2){
		if(a[ca][cb+1]!='*') {cb++;}
		else flag_c++;
	}
	else if(flag_c%4==3){
		if(a[ca+1][cb]!='*') {ca++;}
		else flag_c++;
	}
	else if(flag_c%4==0){
		if(a[ca][cb-1]!='*') {cb--;}
		else flag_c++;
	}
}
int main(){
	memset(a,'*',sizeof(a));
	for(int i=1;i<=10;i++){
		for(int j=1;j<=10;j++) {
			cin>>a[i][j];
			if(a[i][j]=='F') fa=i,fb=j;
			if(a[i][j]=='C') ca=i,cb=j;
		}
	}
	while((fa!=ca || fb!=cb) && t<200000){
		walk_f();
		walk_c();
		t++;
		if(fa==ca && fb==cb){
			cout<<t;
			return 0;
		}
	}
	cout<<"0";
	return 0;
}
2024/11/3 22:23
加载中...