求助
查看原帖
求助
1193780
wuhusjqif楼主2023/12/17 00:00
#include<stdio.h>
typedef struct{
    int x;
    int y;
    int f;
}site;
int map[15][15]={};
int record[11][11][5][11][11][5]={};
void move(site* z){
    int n=z->x,m=z->y;
    if(z->f==1){
        if(map[n-1][m])z->x--;
        else z->f++;
    }
    else if(z->f==2){
        if(map[n][m+1])z->y++;
        else z->f++;
    }
    else if(z->f==3){
        if(map[n+1][m])z->x++;
        else z->f++;
    }
    else {
        if(map[n][m-1])z->y--;
        else z->f=1;
    }
}
int main(){
    int tim=0;char ch;
    site cow,fam;
    for(int i=1;i<=10;i++){
        for(int j=1;j<=10;j++){
            ch=getchar();
            if(ch=='*')continue;
            map[i][j]=1;
            if(ch=='C'){
                cow.x=i;
                cow.y=j;
                cow.f=1;
            }
            if(ch=='F'){
                fam.x=i;
                fam.y=j;
                fam.f=1;
            }
        }
    }
    while(cow.x!=fam.x||cow.y!=fam.y){
        tim++;
        if(record[cow.x][cow.y][cow.f][fam.x][fam.y][fam.f]==1){
            printf("0");return 0;
        }
        record[cow.x][cow.y][cow.f][fam.x][fam.y][fam.f]=1;
        move(&cow);move(&fam);
        
    }
    printf("%d",tim);
}
2023/12/17 00:00
加载中...