@[lucy2012](/user/1252442)
```cpp
#include <iostream>
using namespace std;
char map[10][10];
struct cowed{
int x,y,angle=0;
};
struct farmered{
int x,y,angle=0;
};
int cnt=0;
/** 012345678 9 -> x eg. * is in map[0][0]
0 *...*.... .
1 ......*.. .
2 ...*...*. .
3 ......... .
4 ...*.F... .
5 *.....*.. .
6 ...*..... .
7 ..C...... *
8 ...*.*... .
9 .*.*..... .
-> y
..........
.********.
.********.
.********.
.********.
.********.
.********.
C********.
.********.
F.........
**/
cowed cow;
farmered farmer;
cowed a;
farmered b;
int main()
{
for (int i=0;i<10;i++){
cin>>map[i];
}
if (map[0]==".........."&&map[9]==".........."){
cout<<0;
return 0;
}
//find cow
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
if (map[i][j]=='C'){
cow.x=j;
cow.y=i;
break;
}
}
}
//find farmer
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
if (map[i][j]=='F'){
farmer.x=j;
farmer.y=i;
break;
}
}
}
// if (cow.y==1){
//cout<<0;
// return 0;
// }
// if (cow.y==0&&farmer.y==9){
// cout<<0;
// return 0;
// }
a.x=cow.x;
a.y=cow.y;
b.x=farmer.x;
b.y=farmer.y;
//printf("%d %d %d %d",cow.x,cow.y,farmer.x,farmer.y);
//int a;
//cin>>a;
//move
while (++cnt&&cnt<=600000){
//cout<<2;
if (a.x==cow.x&&a.y==cow.y&&cow.angle==0&&b.x==farmer.x&&b.y==farmer.y&&farmer.angle==0&&cnt!=1){
cout<<0;
return 0;
}
if (cow.x==farmer.x&&cow.y==farmer.y){
cout<<cnt-1;
return 0;
}
//angle=0 up
//angle=90 ->
//angle=180 down
//angle=270 <-
//cow move
//0
if (cow.angle==0){
if (map[cow.y-1][cow.x]!='*'&&cow.y!=0){
cow.y--;
}else{
cow.angle+=90;
goto t;
}
}
//90
if (cow.angle==90){
if (map[cow.y][cow.x+1]!='*'&&cow.x!=9){
cow.x++;
}else{
cow.angle+=90;
goto t;
}
}
//180
if (cow.angle==180){
if (map[cow.y+1][cow.x]!='*'&&cow.y!=9){
cow.y++;
}else{
cow.angle+=90;
goto t;
}
}
//270
if (cow.angle==270){
if (map[cow.y][cow.x-1]!='*'&&cow.x!=0){
cow.x--;
}else{
cow.angle+=90;
goto t;
}
}
t:
//farmer move
//0
if (farmer.angle==0){
if (map[farmer.y-1][farmer.x]!='*'&&farmer.y!=0){
farmer.y--;
}else{
farmer.angle+=90;
goto g;
}
}
//90
if (farmer.angle==90){
if (map[farmer.y][farmer.x+1]!='*'&&farmer.x!=9){
farmer.x++;
}else{
farmer.angle+=90;
goto g;
}
}
//180
if (farmer.angle==180){
if (map[farmer.y+1][farmer.x]!='*'&&farmer.y!=9){
farmer.y++;
}else{
farmer.angle+=90;
goto g;
}
}
//270
if (farmer.angle==270){
if (map[farmer.y][farmer.x-1]!='*'&&farmer.x!=0){
farmer.x--;
}else{
farmer.angle+=90;
goto g;
}
}
g:
cow.angle%=360;
farmer.angle%=360;
//printf("%d %d %d %d\n",cow.x,cow.y,farmer.x,farmer.y);
}
cout<<0;
return 0;
}
/**#include <iostream>
using namespace std;
char map[10][10];
struct cowed{
int x,y,angle=0;
};
struct farmered{
int x,y,angle=0;
};
int cnt=0;
012345678 9 -> x eg. * is in map[0][0]
0 *...*.... .
1 ......*.. .
2 ...*...*. .
3 ......... .
4 ...*.F... .
5 *.....*.. .
6 ...*..... .
7 ..C...... *
8 ...*.*... .
9 .*.*..... .
-> y
cowed cow;
farmered farmer;
int main()
{
for (int i=0;i<10;i++){
cin>>map[i];
}
//find cow
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
if (map[i][j]=='C'){
cow.x=j;
cow.y=i;
break;
}
}
}
//find farmer
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
if (map[i][j]=='F'){
farmer.x=j;
farmer.y=i;
break;
}
}
}
//printf("%d %d %d %d",cow.x,cow.y,farmer.x,farmer.y);
//int a;
//cin>>a;
//move
while (++cnt||cnt<=200000){
//cout<<2;
if (cow.x==farmer.x&&cow.y==farmer.y){
cout<<cnt-1;
return 0;
}
//angle=0 up
//angle=90 ->
//angle=180 down
//angle=270 <-
//cow move
//0
if (cow.angle==0){
if (map[cow.y-1][cow.x]!='*'&&cow.y!=0){
cow.y--;
}else{
cow.angle+=90;
goto t;
}
}
//90
if (cow.angle==90){
if (map[cow.y][cow.x+1]!='*'&&cow.x!=9){
cow.x++;
}else{
cow.angle+=90;
goto t;
}
}
//180
if (cow.angle==180){
if (map[cow.y+1][cow.x]!='*'&&cow.y!=9){
cow.y++;
}else{
cow.angle+=90;
goto t;
}
}
//270
if (cow.angle==270){
if (map[cow.y][cow.x-1]!='*'&&cow.x!=0){
cow.x--;
}else{
cow.angle+=90;
goto t;
}
}
t:
//farmer move
//0
if (farmer.angle==0){
if (map[farmer.y-1][farmer.x]!='*'&&farmer.y!=0){
farmer.y--;
}else{
farmer.angle+=90;
goto g;
}
}
//90
if (farmer.angle==90){
if (map[farmer.y][farmer.x+1]!='*'&&farmer.x!=9){
farmer.x++;
}else{
farmer.angle+=90;
goto g;
}
}
//180
if (farmer.angle==180){
if (map[farmer.y+1][farmer.x]!='*'&&farmer.y!=9){
farmer.y++;
}else{
farmer.angle+=90;
goto g;
}
}
//270
if (farmer.angle==270){
if (map[farmer.y][farmer.x-1]!='*'&&farmer.x!=0){
farmer.x--;
}else{
farmer.angle+=90;
goto g;
}
}
g:
cow.angle%=360;
farmer.angle%=360;
//printf("%d %d %d %d\n",cow.x,cow.y,farmer.x,farmer.y);
}
cout<<0;
return 0;
}**/
```
by love20110429 @ 2024-03-17 19:56:59