我的代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
char m[10][10];
bool his[1000000];
memset(his,false,sizeof(his));
int fr,fc,cr,cc,frs=-1,fcs=0,crs=-1,ccs=0;
for (int i=0;i<10;++i) {
for (int j=0;j<10;++j) {
cin>>m[i][j];
if (m[i][j]=='F') {
fr=i;fc=j;
} else if (m[i][j]=='C') {
cr=i;cc=j;
}
}
}
int i=1;
int special_value;
bool fturn,cturn;
while (true) {
fr+=frs;fc+=fcs;cr+=crs;cc+=ccs;
fturn=false;cturn=false;
if (fr<0 || fr>9 || fc<0 || fc>9 || m[fr][fc]=='*') {
fturn=true;
fr-=frs;fc-=fcs;
if (frs==-1 && fcs==0) {
frs=0;fcs=1;
} else if (frs==0 && fcs==1) {
frs=1;fcs=0;
} else if (frs==1 && fcs==0) {
frs=0;fcs=-1;
} else {
frs=-1;fcs=0;
}
}
if (cr<0 || cr>9 || cc<0 || cc>9 || m[cr][cc]=='*') {
cturn=true;
cr-=crs;cc-=ccs;
if (crs==-1 && ccs==0) {
crs=0;ccs=1;
} else if (crs==0 && ccs==1) {
crs=1;ccs=0;
} else if (crs==1 && ccs==0) {
crs=0;ccs=-1;
} else {
crs=-1;ccs=0;
}
}
if (!(fturn && cturn)) {
int facea,faceb;
if (frs==0 && fcs==0) facea=0;
else if (frs==0 && fcs==1) facea=1;
else if (frs==0 && fcs==-1) facea=2;
else if (frs==1 && fcs==0) facea=3;
else if (frs==1 && fcs==1) facea=4;
else if (frs==1 && fcs==-1) facea=5;
else if (frs==-1 && fcs==0) facea=6;
else if (frs==-1 && fcs==1) facea=7;
else if (frs==-1 && fcs==-1) facea=8;
if (crs==0 && ccs==0) faceb=0;
else if (crs==0 && ccs==1) faceb=1;
else if (crs==0 && ccs==-1) faceb=2;
else if (crs==1 && ccs==0) faceb=3;
else if (crs==1 && ccs==1) faceb=4;
else if (crs==1 && ccs==-1) faceb=5;
else if (crs==-1 && ccs==0) faceb=6;
else if (crs==-1 && ccs==1) faceb=7;
else if (crs==-1 && ccs==-1) faceb=8;
special_value=(fr*10+fc)*10000+(cr*100+cc)+facea*10+faceb;
if (his[special_value]) {
cout<<0<<endl;
break;
} else {
his[special_value]=true;
}
}
if (fr==cr && fc==cc) {
cout<<i<<endl;
break;
}
++i;
}
return 0;
}
第5个测试点总是WA,但是找不出哪里错,麻烦大佬指点指点!!!感谢!