##5出错了,89分怎么办
查看原帖
##5出错了,89分怎么办
672519
Bing_zhou楼主2022/2/14 16:43
#include <bits/stdc++.h>
using namespace std;
char o[15][15];
bool check(int a,int b){
    if(a>=1&&a<=10&&b>=1&&b<=10&&o[a][b]!='*')return 1;
    else return 0;
}
struct sub{
    int x,y,di=0;
    int d[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
    int s[15][15][4]={{{0}}};
}c,f;

int main(){
    for(int i=1;i<=10;++i){
        for(int j=1;j<=10;++j){
            cin >>o[i][j];
        }
    }
    for(int i=1;i<=10;++i){
        for(int j=1;j<=10;++j){
            if(o[i][j]=='C') {
                
                c.x=i;
                c.y=j;
                break;
            }
        }
    }
    for(int i=1;i<=10;++i){
        for(int j=1;j<=10;++j){
            if(o[i][j]=='F') {
                
                f.x=i;
                f.y=j;
                break;
            }
        }
    }
    int sum=0;
    while(1){
        
        if(f.s[f.x][f.y][f.di]==1&&c.s[c.x][c.y][c.di]==1){sum=0;break;}
        c.s[c.x][c.y][c.di]=1;
        f.s[f.x][f.y][f.di]=1;
        if(f.x==c.x&&f.y==c.y)break;
        if(check(c.x+c.d[c.di][0],c.y+c.d[c.di][1])){
            c.x+=c.d[c.di][0];
            c.y+=c.d[c.di][1];
        }
        else{
            c.di++;
            c.di%=4;
        }
        if(check(f.x+f.d[f.di][0],f.y+f.d[f.di][1])){
            f.x+=f.d[f.di][0];
            f.y+=f.d[f.di][1];
        }
        else{
            f.di++;
            f.di%=4;
        }
        sum++;
    }
    cout<<sum;
    return 0;
} 
2022/2/14 16:43
加载中...